错误:';。类别';在下面的Java代码中应为
在下面的代码中,我试图打印两个数组的差异,但我得到了这个类错误:“.class”应为 就在这里错误:';。类别';在下面的Java代码中应为,java,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,2
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);
}
}
}
公共类阵列副本9526{
公共静态void main(字符串[]args){
int[]sourceArr={0,1,23,4,45,5667,7764,8,23};
int[]arrayAno={2,3,34,456,56,13123,8,23};
arrayDiff(sourceArr,arrayAno);
}
公共静态无效arrayDiff(int[]arrayOne,int[]arrayTwo){
int array1=arrayOne.length;
int array2=arrayTwo.length;
如果(阵列1<阵列2)
int[]buffer=新的int[array1];
其他的
int[]buffer=新的int[array2];
for(int i=0;i
此代码有什么问题?对于
if
和else
的主体,必须有语句或块,而不是声明。“.class expected”消息令人困惑,但它出现在声明中。“不是一个声明”可能是一个更清晰的信息
在if
之前声明缓冲区,并将其分配到if
和else
中
int[] buffer;
if(array1 < array2)
buffer = new int[array1];
else
buffer = new int[array2];
int[]缓冲区;
如果(阵列1<阵列2)
缓冲区=新整数[array1];
其他的
缓冲区=新整数[array2];
缓冲区
超出了if
语句末尾的范围
在if
之前声明缓冲区
,或使用三元运算符:
int[] buffer = new int[array1 < array2 ? array1 : array2];
int[]buffer=newint[array1
它是否说明了它在哪一行期待.class
?为我们提供诊断?我已经更新了问题@antoh。感谢汉克斯,这是我第一次看到这个。为什么声明不被认为是一个声明?作为if
或else
的主体,它是无用的。它立即超出范围。这是一个很好的初始化方法。ThanksIt确实允许初始化,但if语句的范围规则覆盖了这一点。这一切都会带来更好的程序稳定性,因为一个块在Java中指定了作用域,所以缓冲区在if块之后超出了作用域,对于其余的代码不可用。