在下面的代码中,我试图打印两个数组的差异但是我得到了这个类错误:' .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);
}
}
}
此代码有什么问题?
答案 0 :(得分:5)
对于if
和else
的正文,您必须有声明或块,而不是声明。 “.class expected”消息令人困惑,但它出现在声明中。 “不是声明”可能是一个更清晰的信息。
在buffer
之前声明您的if
,并将其分配到if
和else
。
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];