【问题标题】:New to java stuck on Switch statementjava新手卡在Switch语句上
【发布时间】:2016-12-29 11:12:54
【问题描述】:

您好,我想使用 switch 语句创建一个程序,其中用户输入的长度应在 1-100 之间。如果用户输入的值小于 1 或大于 100,则会显示错误 [System.out.println("Your number (" + Length + ") is not between 1-100. \nTry again." );]。我制作的程序要求用户输入 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.");
            }
        }
    }

。有人可以告诉我需要做什么才能在下面提到的程序中获得所需的结果吗?

【问题讨论】:

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


    【解决方案1】:

    您在这里似乎没有正确使用开关:

    您的代码从用户那里获取长度,从该字符串中获取一个 int,然后将其传递到此处切换。

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

    在这种情况下,如果 lamba 应该等于“1”,这种情况才会发生。 2-100 的值不起作用。您的 while 外观也是 noop,它永远不应该运行,因为 lamba 永远不会等于 1 和大于 100 或同时


    另外,switch 并不是解决这个问题的最佳工具。当您要比较有限数量的固定状态时,Switch 是理想的选择(命令行开关可能是一个很好的例子),而不适合比较这样的数字范围(大于或小于)。

    您应该使用 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;
    }
    

    【讨论】:

    • 感谢您的帮助...!! :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    相关资源
    最近更新 更多