int无法转换为int

新编程在这里,我不断得到错误信息,’不兼容的类型,int不能转换为int []’,问题是如果它们是相同的长度添加R1和R2,如果没有打印一条消息说’数组必须是相同的长度’,如果这很重要,不确定我哪里出错,任何帮助将不胜感激

public int[] arrayAdd(int[] R1, int[] R2) { int[] sumArray= new int[R1.length]; if( R1.length!= R2.length) { System.out.println("The arrays must be same length"); } else { for(int i=0; i< R1.length; i++) for (int j=0; j<R2.length; j++) { sumArray= R1[i]+ R2[j]; // Error } } return sumArray; } 

  sumArray[i]= R1[i]+ R2[j]; // updated line 

你需要分配一个数组元素,但你做错了。

不知道我哪里出错了

您正在尝试将int分配给类型为int[]的变量。

这不合法……而且没有意义。

这个:

  sumArray= R1[i]+ R2[j]; 

应该是这个

  sumArray[something_or_other] = R1[i] + R2[j]; 

…除了你有一堆其他错误,这意味着一个简单的“点修复”将是不正确的。

提示:您不需要嵌套循环来添加两个数组的元素。

– 史蒂夫

你的代码在很多方面都被打破了,至少:

  1. 你声明返回一个数组但是当输入的大小错误时它的值是多少? 以更好的方式管理此类错误(停止,抛出exception,返回错误代码等)。 至少永远不会在这个地方展示一些东西,这不是你必须解决错误的地方,这是你在这里检测它的地方,只需向呼叫者报告。
  2. 您(尝试)为返回的值创建了空间,但如果不满足返回值的条件,该怎么办呢?
  3. 你使用Java语法来声明一个数组, int []sumArray应该是`int sumArray [0]。
  4. 你无法动态分配这样的数组,捕获动态分配必须使用指针,数组不是指针。 但是指针可以设置为已分配数组的内存地址,如int *sumArray = new int[10]
  5. sumArray是一个数组,所以设置它的元素使用sumArray[index] = ...

所以这可能会更好:

 public int *arrayAdd(int[] R1, int[] R2) { if( R1.length!= R2.length) { return nullptr; } int *sumArray= new int[R1.length]; for(int i=0; i< R1.length; i++) { sumArray[i] = R1[i]+ R2[i]; } return sumArray; } 

问题编辑后

如果你想逐个元素地求和两个数组,那么一个循环就足够了......

实际上在该行中sumArray是一个整数数组,你只是将它指定为整数,而且你还没有声明变量j。 试试这个-

 public int[] arrayAdd(int[] R1, int[] R2) { int[] sumArray= new int[R1.length]; if( R1.length!= R2.length) { System.out.println("The arrays must be same length"); } else { for(int i=0; i< R1.length; i++) { sumArray[i]= R1[i]+ R2[i]; // Error } } return sumArray; }