Можете ли вы использовать условные выражения в других условных выражениях? - PullRequest
0 голосов
/ 14 января 2020

Мой вопрос прост, будет ли работать следующий код, если он не может, есть ли способ добиться sh того же эффекта

int day = 5; 
    String dayString; 

    switch (if (day > 0) { 
    case 1: 
        dayString = "Monday"; 
        day++;
        break; 
    case 2: 
        dayString = "Tuesday"; 
        day++;
        break; 
    case 3: 
        dayString = "Wednesday"; 
        day++;
        break; 
    case 4: 
        dayString = "Thursday"; 
        day++;
        break; 
    case 5: 
        dayString = "Friday"; 
        day++;
        break; 
    case 6: 
        dayString = "Saturday"; 
        day++;
        break; 
    case 7: 
        dayString = "Sunday"; 
        day++;
        break; 
    default: 
        dayString = "Invalid day"; 
        day++;
        break; 
    } 
    System.out.println(dayString); 

Вывод должен быть в пятницу, в основном мой вопрос Вы можете поместить операторы if или while или for или do или другие операторы в параметры соответствующих операторов.

Ответы [ 2 ]

2 голосов
/ 14 января 2020
Синтаксис

Java имеет несколько различных структур. Здесь особое значение имеют выражения и выражения .

Выражение - это нечто, имеющее значение. Инструкция - это инструкция что-то делать (*).

if - инструкция. Общий синтаксис:

if (expression) statement

({} также является своего рода оператором, поэтому вы можете использовать фигурные скобки для окружения кода, который вы хотите выполнить).

expression должен иметь тип boolean или Boolean.

switch также является оператором. Общий синтаксис:

switch (expression) {
  // ...
}

Выражение должно иметь тип int, char, short, byte (или их аналоги в штучной упаковке), String или enum , Вы не можете использовать boolean, long, float или double.

Поскольку коммутатору необходимо выражение в скобках, вы не можете использовать оператор там.


(*) Некоторые выражения тоже могут «что-то делать», то есть имеют побочный эффект, например i++. Это специальные выражения на языке Java, называемые StatementExpression s, которые можно записать в виде оператора, добавив точку с запятой: i++; допустимо, поскольку оно что-то значимо делает, i; - нет.

0 голосов
/ 14 января 2020

приведенный выше код не будет работать ... в этом коде есть синтаксическая ошибка. Вы не можете добавить условие if внутри фигурных скобок переключателя ... он ожидает, что переменная будет оценена ... условия даны с использованием регистра операторы ... чтобы получить пятницу в качестве выходного, просто поместите переменную 'day' в фигурные скобки переключателя - вот так-> switch (day)

...