[英]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
以便執行案例的。
它將在case 1:
的塊處開始執行case 1:
如果number
為1
。 因為1
不小於0
,所以該塊不會產生任何輸出。
它將在case 2:
的塊處開始執行case 2:
如果number
為2
。 因為1
不小於0
,所以該塊將產生輸出“ Number大於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();
您無需解析輸入,並確保用戶為您提供了一個整數。
至於你的開關盒,你的休息; 在if語句內部,因此當代碼讀取中斷時,它將中斷包含它的循環。 在您的情況下,它超出if / else語句,而不是switch情況。
希望我能幫上忙!
case 1:
表示數字等於 1。但是由於1不小於0,您將永遠不會看到“數字小於0。”,並且不會中斷。 (該break
位於if (number < 0)
部分內)。
case 2:
表示數字等於 2。如果輸入2,則將輸入此情況。
這將為您可能輸入的所有其他值保留default
值,我想其中大多數都是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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.