for循环中三元运算符为什么会报错?

Why do error occur with ternary operator in for cycle?

我对 Java 中的三元运算符有疑问。 我收到一个错误:

> Compilation error Main.java:14: error: unexpected type
>         (i%2==0) ? sum += i/2 : sum += i/2+1;
>                  ^ required: variable found:    value 1 error

我不明白为什么? 谢谢!

import java.util.*;
public class Main {

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int[] mas = {0,0,0};//new int[3];
    int sum=0;

    for (int i=0; i< mas.length; i++) {
        mas[i] = scanner.nextInt();
    }

    for(int i : mas){
        (i%2==0) ? sum += i/2 : sum += i/2+1;
//            if(i%2 == 0) sum += i/2;
//            else sum += i/2+1;
    }
    System.out.println(sum);
}
}

您声明的方式不正确:

sum += (i%2==0) ? i/2 : i/2+1;

顺序是:变量、赋值运算符、条件、问号、条件满足时的值、否则的值。

不是这样的。三元运算符需要表达式。定义看起来像这样

ConditionalExpression:
ConditionalOrExpression
ConditionalOrExpression ? Expression : ConditionalExpression

你反而有两个陈述。您可以为此使用正常的 if-else 或将其更改为这样的分配

sum += i%2 == 0 ? i/2 : i/2+1;