2016-12-29 35 views
0

嗨我想通過使用switch語句創建一個程序,用戶輸入的長度應該在1-100之內。如果用戶輸入的值超過1或大於100,則會顯示一個錯誤[System.out.println(「您的號碼(」+長度+「)不在1-100之間)。\ n再試一次。」 );]。我做的程序是要求用戶輸入1-100之間的數字,當我輸入數字1時輸出正確,因爲數字1是在情況1中提到的。但是它沒有讀到我在情況1中提到的條件,當我給出不同的價值來檢查條件是否有效。新的Java卡住在Switch語句

package com.company; 
 
import java.util.Scanner; 
 

 
/** 
 
* Created by MRIDULA on 27-12-2016. 
 
*/ 
 
public class SwitchDemo { 
 

 
    public static void main(String[] args) { 
 

 
     Scanner length = new Scanner(System.in); 
 
     System.out.println("Enter a number between 1-100 for length: "); 
 

 
     int lamba; 
 
     lamba = length.nextInt(); 
 

 
     switch (lamba) { 
 

 
      case 1: while ((lamba> 100) || (lamba <= 1)) { 
 

 
       System.out.println("Great, your number for length is between 1 and 100"); 
 
      break;} 
 

 
       case 2: System.out.println("Your number for length is not between 1-100. \nTry again."); 
 
        break; 
 

 
       default: System.out.println("Invalid number.\nTry again."); 
 
      } 
 
     } 
 
    }

。有人能告訴我需要做什麼才能在下面提到的程序中獲得理想的結果?

回答

0

你似乎並沒有被正確使用此開關:

您的代碼長度得到了來自用戶,得到了該字符串一個int,然後通過它來這裏進行切換。

switch(lamba) { 
    case 1: while ((lamba> 100) || (lamba <= 1)) { 

在這種情況下,如果lamba應該等於「1」發生這種情況。 2-100的值不起作用。你的外觀也是noop,它永遠不會運行,因爲lamba永遠不會等於1,同時大於100或< = 1。


此外,開關不是這個問題的最佳工具。當您有固定狀態的數量比較有限(命令行開關可能是一個很好的例子)時,開關是理想的,並且不適合比較這種數字範圍(大於或小於)。

您應該使用if/elsif/else語句。像下面這樣。

if (((lamba> 100) || (lamba <= 1))) { 
    System.out.println("Great, your number for length is between 1 and 100"); 
else { 
    System.out.println("Your number for length is not between 1-100. \nTry again."); 
} 

現在,我想補充一點,你可以做到這一點(雖然它不漂亮)。但是,這樣做只會讓代碼變得複雜,難以理解代碼的意圖。

if (lamba > 100) { 
    lamba = 101; 
} 
if (lamba < 1) { 
    lamba = 0; 
} 
switch (lamba) { 
    case 0: 
    case 101: 
     System.out.println("Your number for length is not between 1-100. \nTry again."); 
     break; 
    default: 
     System.out.println("Great, your number for length is between 1 and 100"); 
     break; 
} 
+0

感謝您的幫助......! :-) – Sayury