二元运算符+的坏操作数类型

时间:2015-09-15 13:12:32

标签: java

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 个答案:

答案 0 :(得分:0)

sum应该是int,而不是int[]

更改

int[] A={1,2,3,4,5,6},sum=0;

int[] A={1,2,3,4,5,6};
int sum=0;

答案 1 :(得分:0)

sum被声明为int[],请改为:

int[] A={1,2,3,4,5,6};
int sum = 0;

您可以在单个字段声明(JLS 8 § 8.3)中声明多个字段,但在这种情况下:

  

通过使用多个声明符,可以在单个FieldDeclaration中声明多个字段; FieldModifiers和UnannType适用于声明中的所有声明者

即。该类型适用于声明语句中的所有字段。

您也可以在这样的语句中为变量名添加初始值设定项,但在您的情况下,第二个初始值设定项=0与FieldDeclaration语句的类型不匹配,因此编译器不会&#39 ; t让你编译语句int[] A={1,2,3,4,5,6},sum=0;。您的IDE可能会通过Type mismatch: cannot convert from int to int[]之类的消息告诉您该错误,但您还没有看到它。

答案 2 :(得分:0)

您将sum声明为int的数组,但将其初始化为int值,这就是问题所在。

这一行不会编译

int[] A={1,2,3,4,5,6},sum=0;

应该是这样的

int A[]={1,2,3,4,5,6},sum=0;

int[] A={1,2,3,4,5,6};
int sum=0;

通过这样做,A被声明为数组,sum被描述为原始整数数据类型。

答案 3 :(得分:0)

int[] A={1,2,3,4,5,6},sum=0;

问题:

编译器将sum视为整数数组,而不是int。由于您在类型int[]

旁边声明了

解决方案:

如果你写

,你会没事的
int[] A={1,2,3,4,5,6};
int sum=0;

增强功能:

sum=(sum+A[i]);有一个简写符号可以简单地重写为

sum += A[i];

答案 4 :(得分:0)

正如您在完整的错误消息中所看到的那样:

  

对于参数类型int [],int

,运算符+未定义

您将Asum定义为int[]

您必须更改为:

int[] A={1,2,3,4,5,6};
int sum=0;

答案 5 :(得分:-1)

您无法对int值和array求和。如果您希望代码运行,则必须将sum声明为int。 你的主要方法应该是:

public static void main(String []args){
    int[] A={1,2,3,4,5,6};
    int sum=0;
    for(int i=2;i<=4;i++)
    {
       sum=(sum+A[i]);
    }

    System.out.println("the sum is"+sum);

}

答案 6 :(得分:-1)

由于此行,您的总和也属于int[]类型。

int[] A={1,2,3,4,5,6},sum=0;

您必须像sum那样int

int[] A={1,2,3,4,5,6};
int sum=0;