【问题标题】:How to use a switch...case loop in java inside a nested if...else if...else loop?如何在嵌套的 if...else if...else 循环中使用 java 中的 switch...case 循环?
【发布时间】:2020-10-15 23:40:26
【问题描述】:
import java.util.Scanner;

import javax.lang.model.util.ElementScanner14;

class mudit {
    public static void main(final String[] args) {

        final Scanner input = new Scanner(System.in);

        System.out.print("Enter!!!");
        final char n = input.next().charAt(0);
        
        art :
        if ((n >= 'a' && n <= 'z' ) || (n >= 'A' && n <= 'z'))
            System.out.println(n + " is an alphabet.");

            dart :
            if ( n == 'a' || n == 'e' || n == 'i' || n == 'o' || n == 'u' || n == 'A' || n == 'E' || n == 'I' || n == 'O' || n == 'U')
                System.out.println("VOWEL");
                break dart;
            else 
                System.out.println("CONSONANT");
                break dart;

        else if ( n * 1 == n)
            System.out.println(n + " is a numerical value.");
        else 
            System.out.println("Something else");

        input.close();
    }
}

每次运行此代码时都会遇到错误。

线程“main”java.lang.Error 中的异常:未解决的编译问题: 标记“else”的语法错误,删除此标记

    at mudit.main(mudd.java:28)

我想让它知道输入的字符是字母(元音或辅音)还是数字

我正在使用 vs 代码编辑器。

【问题讨论】:

  • 尝试将整个 if 块括在括号 { } 中。目前break dart; 不在if 块中。你应该避免标签和标签中断。我已经好几年没看到有人用过了。
  • 也许看看this 并专注于正确使用语法(例如括号)。
  • else if ( n * 1 == n) 始终为“真”。 java是强类型的,当通过'n * 1'输入时,字符'1'不是数字1。它是字符'1'的ascii代码。 Java 不是 javascript :)

标签: java if-statement switch-statement nested-loops break


【解决方案1】:

如果“if”或“else”中有超过一行,则需要将这些语句用 { } 括起来。现在应该可以了。

import java.util.Scanner;

import javax.lang.model.util.ElementScanner14;

class mudit {
    public static void main(final String[] args) {

        final Scanner input = new Scanner(System.in);

        System.out.print("Enter!!!");
        final char n = input.next().charAt(0);
        
        art :
        if ((n >= 'a' && n <= 'z' ) || (n >= 'A' && n <= 'z')) {
            System.out.println(n + " is an alphabet.");

            dart :
            if ( n == 'a' || n == 'e' || n == 'i' || n == 'o' || n == 'u' || n == 'A' || n == 'E' || n == 'I' || n == 'O' || n == 'U') {
                System.out.println("VOWEL");
                break dart;
            } else { 
                System.out.println("CONSONANT");
                break dart;
            }
        }
        else if ( n * 1 == n)
            System.out.println(n + " is a numerical value.");
        else 
            System.out.println("Something else");

        input.close();
    }
}

【讨论】:

    【解决方案2】:

    问题是if 语句块不止一行。如果块只有一行,则只能使用不带花括号的 if 语句、else 语句或 else if 语句。要解决此问题,只需将条件用大括号括起来即可。

    另一方面,在这种情况下中断不会做任何事情。您只能跳出for-loopadvanced for-loopwhile loopdo-while loopswitch 语句。我可能忘记了 1 或 2 个场景,请随时提醒我!

    【讨论】:

    • 感谢的帮助
    • 感谢的帮助
    • 为什么我觉得这不是正版:p
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2015-10-28
    • 2012-10-15
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多