繁体   English   中英

为什么三元运算符在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);
}
}

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

条件表达式:
条件或表达式
ConditionalOrExpression? 表达式:条件表达式

相反,您有两个声明。 您可以使用常规的if-else或将其更改为这样的赋值

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

您以错误的方式声明了它:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM