首页 文章

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

提问于
浏览
-1
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

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

    更改

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

    int[] A={1,2,3,4,5,6};
    int sum=0;
    
  • 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 被声明为原始整数数据类型 .

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

    Problem :

    编译器将 sum 视为整数数组,而不是 int . 因为您在 int[] 类型旁边声明

    Solution:

    如果你写的话,你会没事的

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

    Enhancement :

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

    sum += A[i];
    
  • 0

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

    对于参数类型int [],int,未定义运算符

    你将 Asum 定义为 int[]

    你必须改为:

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

    sum 声明为 int[] ,改为:

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

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

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

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

    您也可以在这样的语句中为变量名添加初始化程序,但在您的情况下,第二个初始化程序 =0 不能让您编译语句 int[] A={1,2,3,4,5,6},sum=0; . 您的IDE可能会通过 Type mismatch: cannot convert from int to int[] 之类的消息告诉您该错误,但您还没有看到它 .

  • -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);
    
    }
    
  • -1

    由于此行,您的总和也是 int[] 类型 .

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

    你必须像 int 那样制作 sum

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

相关问题