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