为什么三元运算符在for循环中会发生错误?

时间:2019-05-17 12:03:53

标签: java ternary-operator

我对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);
}
}

2 个答案:

答案 0 :(得分:2)

它不能那样工作。三元运算符需要表达式。定义看起来像这样

  

ConditionalExpression:
     ConditionalOrExpression
     ConditionalOrExpression?表达式:ConditionalExpression

您有两个声明。您可以为此使用常规的if-else或将其更改为这样的作业

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

答案 1 :(得分:0)

您以不正确的方式声明它:

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

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