错误:' .class'期望在以下Java代码中

时间:2014-04-09 17:30:34

标签: java

在下面的代码中,我试图打印两个数组的差异但是我得到了这个类错误:' .class'预期

它来到这里

  ArrayCopy9526.java:15: error: '.class' expected
       int[] buffer = new int[array1];

以下是我的完整代码。

public class ArrayCopy9526 {
   public static void main(String[] args){
      int[] sourceArr = {0,1,23,4,45,5,667,7,764,8,23};
      int[] arrayAno = {2,3,34,45,456,56,13,123,8,23};


      arrayDiff(sourceArr, arrayAno);

   }
  public static void arrayDiff(int[] arrayOne, int[] arrayTwo){
     int array1 = arrayOne.length;
     int array2 = arrayTwo.length;

      if(array1 < array2)   
       int[] buffer = new int[array1];
     else
       int[] buffer = new int[array2];

       for(int i = 0; i < array1; i++ ){
         for(int j= 0; j < array2; j++) {
           if(arrayOne[i] != arrayTwo[j]){
            buffer[i] = arrayOne[i];
           }
         }             
       }

    for(int i :buffer){
        System.out.println(i);
    }
  } 
}

此代码有什么问题?

2 个答案:

答案 0 :(得分:5)

对于ifelse的正文,您必须有声明或块,而不是声明。 “.class expected”消息令人困惑,但它出现在声明中。 “不是声明”可能是一个更清晰的信息。

buffer之前声明您的if,并将其分配到ifelse

int[] buffer;
if(array1 < array2)
   buffer = new int[array1];
else
   buffer = new int[array2];

答案 1 :(得分:1)

buffer超出if声明末尾的范围。

buffer之前声明if或使用三元运算符:

int[] buffer = new int[array1 < array2 ? array1 : array2];