int 不能转换为 int []
int cannot be converted to int []
这里是编程的新手,我不断收到错误消息,incompatible types, int cannot be converted to int []
,问题是如果 R1
和 R2
长度相等,则将它们相加,否则,打印一条消息说 '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
您需要分配给一个数组元素,但您做错了。
您的代码在很多方面有问题,至少:
- 您声明了 return 一个数组,但是当输入的大小错误时它的值是多少?以更好的方式管理此类错误(停止、抛出异常、return 错误代码等)。至少永远不要在这个地方显示任何东西,这不是你必须解决错误的地方,这是你检测到它的地方,只需将它报告给调用者。
- 您(尝试)为 returned 值创建了 space,但如果不满足具有 return 值的条件,这怎么可能?
- 您使用了 Java 语法来声明一个数组,
int []sumArray
应该是 `int sumArray[0].
- 您不能像这样动态分配数组,要捕获动态分配,您必须使用指针,数组不是指针。但是可以将指针设置为已分配数组的内存地址,例如
int *sumArray = new int[10]
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;
}
这里是编程的新手,我不断收到错误消息,incompatible types, int cannot be converted to int []
,问题是如果 R1
和 R2
长度相等,则将它们相加,否则,打印一条消息说 '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
您需要分配给一个数组元素,但您做错了。
您的代码在很多方面有问题,至少:
- 您声明了 return 一个数组,但是当输入的大小错误时它的值是多少?以更好的方式管理此类错误(停止、抛出异常、return 错误代码等)。至少永远不要在这个地方显示任何东西,这不是你必须解决错误的地方,这是你检测到它的地方,只需将它报告给调用者。
- 您(尝试)为 returned 值创建了 space,但如果不满足具有 return 值的条件,这怎么可能?
- 您使用了 Java 语法来声明一个数组,
int []sumArray
应该是 `int sumArray[0]. - 您不能像这样动态分配数组,要捕获动态分配,您必须使用指针,数组不是指针。但是可以将指针设置为已分配数组的内存地址,例如
int *sumArray = new int[10]
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;
}