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
以便它可以执行该案例。
如果number
为1
,它将在case 1:
的块开始执行。因为 1
不小于 0
,该块不会产生任何输出。
如果number
为2
,它将在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.",你也不会休息。 (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();
}
}
似乎找不到此 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
以便它可以执行该案例。
如果number
为1
,它将在case 1:
的块开始执行。因为 1
不小于 0
,该块不会产生任何输出。
如果number
为2
,它将在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.",你也不会休息。 (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();
}
}