2015-05-03 50 views
0

我有";" expected錯誤,我已經試過把「;」但徒勞無益。這是代碼:如何在Java中解決預期的分號錯誤?

public static XYZDataset createDataset(JTable table) 
    { 
    DefaultXYZDataset defaultxyzdataset = new DefaultXYZDataset(); 

    DefaultTableModel dtm = (DefaultTableModel) table.getModel(); 
    int nRow = dtm.getRowCount(), nCol = dtm.getColumnCount(); 
    double[][] ad = new double[nRow][1]; 
    double[][] ad1 = new double[nRow][1]; 
    double[][] ad2 = new double[nRow][1]; 
    double ad3[][]=null; 

    for (int i = 0 ; i < nRow ; i++) 
      { 
       ad[i] = (double[]) dtm.getValueAt(i,1); 
       ad1[i] = (double[]) dtm.getValueAt(i,2); 
       ad2[i] = (double[]) dtm.getValueAt(i,3); 
       ad3[][]={ad[i],ad1[i],ad2[i]} ; 
      } 

     defaultxyzdataset.addSeries("Series 1" , ad3);    
     return defaultxyzdataset; 
    } 

我已經在這條線的錯誤:ad3[][]={ad[i],ad1[i],ad2[i]}

+0

你們是不是要分配AD3的每一行的每次循環?換句話說,將位置i處的ad,ad1和ad2的值設置爲ad3的第i行? – copeg

+0

問題始終存在。 – user4830457

+0

'問題總是存在的'那不能回答我的問題......您希望如何將TableModel數據轉換爲DefaultXYZDataset? – copeg

回答

1

嘗試

public static XYZDataset createDataset(JTable table) 
    { 
    DefaultXYZDataset defaultxyzdataset = new DefaultXYZDataset(); 

    DefaultTableModel dtm = (DefaultTableModel) table.getModel(); 
    int nRow = dtm.getRowCount(), nCol = dtm.getColumnCount(); 
    double[][] ad = new double[nRow][1]; 
    double[][] ad1 = new double[nRow][1]; 
    double[][] ad2 = new double[nRow][1]; 
    double ad3[][][]= new double[nRow][3][1]; 

    for (int i = 0 ; i < nRow ; i++) 
      { 
       ad[i] = (double[]) dtm.getValueAt(i,1); 
       ad1[i] = (double[]) dtm.getValueAt(i,2); 
       ad2[i] = (double[]) dtm.getValueAt(i,3); 
       ad3[i]={ad[i],ad1[i],ad2[i]} ; 
      } 

     defaultxyzdataset.addSeries("Series 1" , ad3);    
     return defaultxyzdataset; 
    } 

您當前的代碼試圖將數組分配到沒有什麼,因爲AD3 [] [ ]在沒有[]中的某些數字的情況下沒有解釋性含義。

0

陣列常數只能用於array initializers;使用此語句來代替:

ad3 = new double[][]{ad[i],ad1[i],ad2[i]}; 
0

陣列初始化後,您不能使用數組常量。如果您聲明並初始化循環AD3它會工作,或者如果你這樣做:

ad3= new double[][]{ad[i],ad1[i],ad2[i]} ; 

的進一步討論,請參見本以前question

0
  1. 首先,ad3未初始化。
  2. 其次,據我所知,你不能像元素 那樣添加元素。 ad3 [] [] = {ad [i],ad1 [i],ad2 [i]};
  3. 如果你想這樣做,你可以這樣做: int [] [] arr = new int [5] [5];
    arr [1] = new int [] {1,2,3,4,5};
    arr [2] = new int [] {1,2,3,4,5};
0

該錯誤是由您在循環內將值分配給ad3的方式引起的。假設你真的想在每個迭代分配一個新的值到數組,你必須改變路線如下:

ad3 = new double[][] {ad[i],ad1[i],ad2[i]};

請注意雖然,這意味着在循環之後ad3的內容將是ad[nRow - 1],ad1[nRow - 1]add[nRow - 1] - 目前尚不清楚爲什麼您在這種情況下使用循環。

0

我解決了這個問題, 這是新代碼

public static XYZDataset createDataset(JTable table) 
 
    { 
 
    DefaultXYZDataset defaultxyzdataset = new DefaultXYZDataset(); 
 
    
 
    DefaultTableModel dtm = (DefaultTableModel) table.getModel(); 
 
    int nRow = dtm.getRowCount(), nCol = dtm.getColumnCount(); 
 
    
 
    for (int i = 0 ; i < nRow ; i++) 
 
      { 
 
       double ad [ ] = { (double)dtm.getValueAt(i, 1)}; 
 
       double ad1 [ ] = { (double)dtm.getValueAt(i, 2)}; 
 
       double ad2 [ ] = { (double)dtm.getValueAt(i, 3)}; 
 
       double ad3[][]={ad,ad1,ad2} ;   
 
      } 
 
    
 
             
 
     defaultxyzdataset.addSeries("Series 1" , ad3);    
 
     return defaultxyzdataset; 
 
    }

相關問題