java语言的新功能卡在了Switch语句

时间:2016-12-29 11:12:55

标签: if-statement for-loop while-loop switch-statement

您好我想使用switch语句创建一个程序,其中用户输入的长度应该在1-100之内。如果用户输入的值小于1或大于100,则会显示错误[System.out.println("您的号码(" +长度+")不介于1-100。\ n再试一次。");]。我做的程序是要求1-100之间的用户输入,当我输入数字1时输出正确,因为在案例1中提到了数字1.但它没有读取我在案例1中提到的条件,当我给出不同的值来检查条件是否有效时。



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.");
            }
        }
    }
&#13;
&#13;
&#13;

。有人能告诉我在下面提到的程序中需要做些什么才能得到理想的结果吗?

1 个答案:

答案 0 :(得分: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;
}