Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误:';。类别';在下面的Java代码中应为_Java - Fatal编程技术网

错误:';。类别';在下面的Java代码中应为

错误:';。类别';在下面的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

在下面的代码中,我试图打印两个数组的差异,但我得到了这个类错误:“.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);
    }
  } 
}
公共类阵列副本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块之后超出了作用域,对于其余的代码不可用。