[英]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.