如何解决Java中预期的分号错误?

时间:2015-05-03 00:24:16

标签: java jtable jfreechart

我有";" expected错误,我已经尝试将“;”但是徒劳无功这是代码:

 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]}

6 个答案:

答案 0 :(得分: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 [] []没有解释意义而没有[]中的一些数字。

答案 1 :(得分:0)

数组常量只能在array initializers中使用;请改用此语句:

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

答案 2 :(得分:0)

阵列初始化后,您无法使用数组常量。如果您在循环中声明并初始化ad3,它将起作用或者如果您这样做:

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

有关进一步的讨论,请参阅此前question

答案 3 :(得分: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};

答案 4 :(得分:0)

错误是由您在循环内为ad3赋值的方式引起的。假设您确实希望在每次迭代期间为该数组分配新值,您必须按如下方式更改该行:

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

请注意,在循环之后意味着ad3的内容将是ad[nRow - 1]ad1[nRow - 1]add[nRow - 1] - 不清楚为什么你是在这种情况下完全使用循环。

答案 5 :(得分:0)

我解决了这个问题, 这是新代码

&#13;
&#13;
 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; 
   }
&#13;
&#13;
&#13;