public class HelloWorld{
public static void main(String []args){
int[] A={1,2,3,4,5,6},sum=0;
for(int i=2;i<=4;i++)
{
sum=(sum+A[i]);
}
System.out.println("the sum is"+sum);
}
}
错误:
HelloWorld.java:7: error: bad operand types for binary operator '+'
sum=(sum+A[i]);
^
first type: int[]
second type: int
2 errors
我知道代码适用于所有8种原始数据类型 . 但为什么不在这里工作?我的数组也是整数类型 .
7 回答
sum
应该是int
,而不是int[]
.更改
至
您将
sum
声明为int
的数组,但将其初始化为int值,这就是问题所在 .这行不会编译
它应该是这样的
要么
通过这样做,
A
被声明为数组,sum
被声明为原始整数数据类型 .Problem :
编译器将
sum
视为整数数组,而不是int
. 因为您在int[]
类型旁边声明Solution:
如果你写的话,你会没事的
Enhancement :
有一个简短的手写符号
sum=(sum+A[i]);
可以简单地重写为正如您在完整的错误消息中所看到的:
你将
A
和sum
定义为int[]
!你必须改为:
sum
声明为int[]
,改为:您可以在单个字段声明(JLS 8 § 8.3)中声明多个字段,但在这种情况下:
即该类型适用于声明语句中的所有字段 .
您也可以在这样的语句中为变量名添加初始化程序,但在您的情况下,第二个初始化程序
=0
不能让您编译语句int[] A={1,2,3,4,5,6},sum=0;
. 您的IDE可能会通过Type mismatch: cannot convert from int to int[]
之类的消息告诉您该错误,但您还没有看到它 .您不能将
int
值和array
相加 . 如果您希望代码运行,则必须将sum
声明为int
. 你的主要方法应该是:由于此行,您的总和也是
int[]
类型 .你必须像
int
那样制作sum