在Java中切换案例语法

时间:2016-02-26 18:24:03

标签: java syntax switch-statement

似乎无法在此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();
    }
}

无论输入什么值,输出始终为&#34;数字为0&#34;。 谢谢!

3 个答案:

答案 0 :(得分:6)

这些案例标签不适合您的标签;它们用于Java来比较number,因此它可以执行该案例。

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

如果case 2:number,它将在2的块处开始执行。由于1不小于0,因此该块将生成“数字大于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.");
}

答案 1 :(得分:0)

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

至于你的开关盒你的休息;在if语句中,所以当代码读取它时会破坏包含它的循环。在你的情况下,它突破了if / else语句而不是switch case。

希望我能帮忙!

答案 2 :(得分:0)

case 1:表示数字等于 1.但由于1不小于0,您将永远不会看到“数字小于0”,并且您不会破坏。 (break位于if (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();
  }
}