int无法转换为int []

时间:2017-08-27 05:36:41

标签: java arrays bluej

这里的新编程和我不断收到的错误信息,'不兼容的类型,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;
}

4 个答案:

答案 0 :(得分:5)

  

不确定我哪里出错了

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

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

此:

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

应该是这个

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

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

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

- 史蒂夫

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

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

    所以这可能会更好:

    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;
    }
    

    编辑问题后

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

答案 3 :(得分:-1)

实际上在该行中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;
}