簡體   English   中英

用Java切換大小寫語法

[英]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:如果number1 因為1不小於0 ,所以該塊不會產生任何輸出。

它將在case 2:的塊處開始執行case 2:如果number2 因為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM