Почему происходит ошибка с троичным оператором в течение цикла? - PullRequest
0 голосов
/ 17 мая 2019

У меня есть вопрос относительно троичного оператора в 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 ]

2 голосов
/ 17 мая 2019

Так не работает. Тернарному оператору нужны выражения. Определение выглядит так

УсловноеВыражение:
ConditionalOrExpression
ConditionalOrExpression? Выражение: Условное выражение

Вместо этого у вас есть два утверждения. Вы либо используете для этого обычный if-else, либо меняете его на подобное

sum += i%2 == 0 ? i/2 : i/2+1;
0 голосов
/ 17 мая 2019

Вы объявляете это неправильно:

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

Порядок: переменная, оператор присваивания, условие, знак вопроса, значение, если условие выполнено, значение в противном случае,

...