Как сравнить переменные типа int в операторах switch в Java? - PullRequest
0 голосов
/ 23 февраля 2020

В операторах if вы можете просто использовать модуль, чтобы проверить, делится ли что-то, например, 'if (number% 3 == 0);'.

При попытке сделать то же самое в операторах switch как 'case (число% 3 == 0): 'сказано, что требуется: int, при условии: boolean. Как мне это решить? Также было бы очень полезно получить краткое объяснение того, почему вы должны это сделать, как вы говорите!

Выполнение базовой c практики, чтобы увидеть, делится ли введенное число на 3, 5, оба или ни на что. Делать оператор if было легко, но это не так.

В настоящее время код (тот же, что и в случае формы, потому что я не мог понять, что делать). Проблема выделена жирным шрифтом:

public static void main(String[] args) {
    Scanner numberEntered = new Scanner(System.in);

    System.out.print("Enter a number: ");
    int number = numberEntered.nextInt();


    switch (number) {

        case **(number  % 3 == 0)**:
            System.out.println("Fizz");
            break;

Пытался разобрать логические и некоторые странные случайные вещи, но ничего, что я пытался придумать, не помогло мне.

Ответы [ 5 ]

1 голос
/ 23 февраля 2020

Попробуйте это

public static void main(String[] args) {
    Scanner numberEntered = new Scanner(System.in);

    System.out.print("Enter a number: ");
    int number = numberEntered.nextInt();

    switch (number  % 3) {

        case (0):
            System.out.println("Fizz");
            break;
0 голосов
/ 23 февраля 2020

Если вы выполняете упражнение FizzBuzz, я бы рекомендовал использовать троичный оператор.

        Scanner input = new Scanner(System.in);
        while (true) {
            int n = input.nextInt();
            if (n <= 0) {
                break;
            }
            String v = n % 15 == 0 ? "FizzBuzz"
                    : n % 3 == 0 ? "Fizz"
                            : n % 5 == 0 ? "Buzz"
                                    : "Not divisible by 3 or 5";
            System.out.println(v);

        }

Он работает следующим образом:

int ret = boolean expression ? a : b.

Если выражение истинно, вернуть в противном случае верните б. a и b также могут быть троичными выражениями, поэтому их можно объединять в цепочки.

В приведенном выше коде.

  • Если оно делится на 15, то FizzBuzz
  • else если на 3, Fizz
  • , иначе, если на 5, Buzz
  • , иначе не делится ни на.
0 голосов
/ 23 февраля 2020

Это простое использование, как это

public static void main(String[] args) {

    Scanner numberEntered = new Scanner(System.in);
    System.out.print("Enter a number: ");
    int number = numberEntered.nextInt();

    switch (number % 3 ) {
        case (0):
            System.out.println("Do something");
            break;
        default:
            break;
    }
}
0 голосов
/ 23 февраля 2020

Как уже прокомментировал Mark Rotteveel , вероятно, нет способа сделать это через Switch в Java. Я бы порекомендовал вам использовать здесь вложенные операторы IF. Вот так:

public static void main(String[] args) {
    Scanner numberEntered = new Scanner(System.in);

    System.out.print("Enter a number: ");
    int number = numberEntered.nextInt();

    if((number%3==0) && (number%5==0)) {
        System.out.println("entered number is divisible with both 3 and 5!")
    } 
    else if (number%3==0) {
        System.out.println("entered number is divisible with 3!")
    }
    else if (number%5==0) {
        System.out.println("entered number is divisible with 5!")
    }
    else if (!(number%3==0) && !(number%5==0)) {
        System.out.println("entered number is NOT divisible with 3 or 5!")
    }
}

Надеюсь, это поможет.

0 голосов
/ 23 февраля 2020

Попробуйте так:

    switch (number % 3) {

    case (0):
        System.out.println("Fizz");
        break;
    }
...