2016-12-29 78 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