Java 中的 Switch case 语法

Switch case syntax in Java

似乎找不到此 switch 语句中的语法错误。非常感谢任何帮助。

源代码:

import java.util.Scanner;

public class SwitchCasing {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        try {
            int number = Integer.parseInt(input);

            switch(number) {
                case 1:
                    if(number < 0) {
                        System.out.println("Number is smaller than 0.");
                        break;
                    }
                case 2: 
                    if(number > 0){
                        System.out.println("Number is greater than 0.");
                        break;
                    }
                default:
                    System.out.println("Number is 0.");
            }
        } catch(IllegalArgumentException e) {
            System.out.println("Please insert a valid number.");
        }
        sc.close();
    }
}

无论输入什么值,输出总是"Number is 0"。 谢谢!

这些箱子标签不是给你贴标签的;它们用于 Java 比较 number 以便它可以执行该案例。

如果number1,它将在case 1: 的块开始执行。因为 1 不小于 0,该块不会产生任何输出。

如果number2,它将在case 2: 的块开始执行。因为 1 不小于 0,该块将产生输出 "Number is greater than 0.".

任何其他数字都将进入默认情况并产生输出 "Number is 0.",即使您的输出不正确。

您不能使用 switch 语句那样测试用例。将其更改为等效的 if/else 结构。

if(number < 0){
    System.out.println("Number is smaller than 0.");
}
else if(number > 0){
    System.out.println("Number is greater than 0.");
}
else {
    System.out.println("Number is 0.");
}

首先,你知道你可以做到吗 int number = sc.nextInt(); 你不需要解析输入,它确保用户给你一个 int。

至于你的 switch case 你休息一下;在 if 语句中,所以当代码读取 break 时,它会中断包含它的循环。在你的情况下,它打破了 if/else 声明而不是 switch case。

希望能帮到你!

case 1: 表示数字 等于 1。但是因为 1 不小于 0 你永远不会看到 "Number is smaller than 0.",你也不会休息。 (breakif (number < 0) 部分内)。

case 2:表示数字等于2.输入2.

就会进入这种情况

剩下 default 用于您可能输入的所有其他值,我猜这是其中的大部分。

在这种情况下,您真的不想要 switch。您应该使用 if-else 构造,如下所示:

public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  String input = sc.nextLine();
  try{
    int number = Integer.parseInt(input);

    if(number < 0) {
        System.out.println("Number is smaller than 0.");
    } else if(number > 0) {
        System.out.println("Number is greater than 0.");
    } else {
      System.out.println("Number is 0.");
    }
  } catch(IllegalArgumentException e) {
    System.out.println("Please insert a valid number.");
  } finally {
    sc.close();
  }
}