int 不能转换为 int []

int cannot be converted to int []

这里是编程的新手,我不断收到错误消息,incompatible types, int cannot be converted to int [],问题是如果 R1R2 长度相等,则将它们相加,否则,打印一条消息说 'the arrays must be same length',如果这很重要,我不确定我哪里出错了,任何帮助将不胜感激

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

not sure where im going wrong

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

那是不合法的...而且没有意义。

这个:

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

应该是这个

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

...除了你有一堆其他错误,这意味着一个简单的 "point fix" 是不正确的。

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

--史蒂夫

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

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

您的代码在很多方面有问题,至少:

  1. 您声明了 return 一个数组,但是当输入的大小错误时它的值是多少?以更好的方式管理此类错误(停止、抛出异常、return 错误代码等)。至少永远不要在这个地方显示任何东西,这不是你必须解决错误的地方,这是你检测到它的地方,只需将它报告给调用者。
  2. 您(尝试)为 returned 值创建了 space,但如果不满足具有 return 值的条件,这怎么可能?
  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;
}