试图使一个简单的循环工作

时间:2014-05-31 19:18:14

标签: java

我正在尝试编写一个代码,要求用户输入一个2位数字。如果用户输入除两位数之外的任何数字,则该程序应该要求用户重新输入该号码。我想出了一个使用while循环的代码。但是代码不起作用。任何帮助将不胜感激。非常感谢你 这是我提出的代码:

import java.util.Scanner;

class Pelindrone {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int num;
        System.out.println(" Enter 2 digit number");
        num = input.nextInt();
        while(num < 10) {
            System.out.println("Enter 2 digit number");
            num = input.nextInt();
            while(num > 99) {
                System.out.println("Enter 2 digit number");
                num = input.nextInt();
            }
        }
    }
}

4 个答案:

答案 0 :(得分:1)

你可以试试这个...... 只需复制我的整个main method并替换你的。{/ p>

您只需要几行代码就可以完成这项工作。 假设您只想验证输入以确保它只有2位数。如果不在java中使用高级内容,您可以这样做。

public static void main(String[] args) 
{
    Scanner scn = new Scanner(System.in);
    int num;

    do 
    {
        System.out.print("Enter a 2 digit number");
        num = nextInt();
    }while (num > 99 || num <10);
}

这足以让整个事情发挥作用。相信我。

您不需要嵌套循环来执行该简单任务。只有在真正有需要时才使用嵌套循环。您可以在一个语句中组合多个条件并放在循环中。

至于您的代码无效的原因

这是因为你的外while-loop条件。它仅在用户输入小于10的数字时运行。但如果用户输入的数字超过10(2,3,4,5,6,n位),则外部while-loop(用于验证)不会一直跑。

答案 1 :(得分:1)

如果你最初给它一个< 10的值,你的代码运行正常,因为它有机会进入第一个while循环。对于连续输入{-5, 0, 1, 9, 100, 1001, 50},我check it in Ideone here,代码按预期结束于50

如果您的第一个值为> 10,则会出现问题,因为它将完全跳过所有内部while循环。这意味着您只能保证第一个值为> 10,而不是< 100。我checked this here使用{100, 1001, 50}的输入代码以100结尾,即使它应以50结尾。

要使其工作,您需要同时检查两个条件语句(num < 10 || num > 99)。另外,我建议使用do-while结构删除代码重复。每次运行后,do-while会检查它的条件语句。这将允许您删除初始化语句。代码低于(see the Ideone here)。

Scanner input = new Scanner(System.in);
int num;

do{
    System.out.println("Enter 2 digit number");  
    num = input.nextInt();
} while(num < 10 || num > 99);

System.out.print("Your number is:" + num);      // guaranteed that 10 <= num <= 99

答案 2 :(得分:0)

这不起作用的唯一原因是因为当你输入一个三位数的数字时,它永远不会进入内部的while循环。

你可以简单地使用一个 while循环检查 条件(小于2或大于2):

import java.util.Scanner;

class Pelindrone {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int num;
        System.out.println(" Enter 2 digit number");
        num = input.nextInt();
        while(num < 10 || num > 99) {
            System.out.println("Enter 2 digit number");
            num = input.nextInt();
        }
    }
}

答案 3 :(得分:0)

如果您输入的数字超过2位,可能无法使用,则第一个while条件无法捕获且程序终止。您需要在第一个案例中捕获该案例,而不是冗余的内部案例。

class Pelindrone {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int num;
        System.out.println(" Enter 2 digit number");
        num = input.nextInt();
        while(num < 10 || num > 99) {
            System.out.println("Enter 2 digit number");
            num = input.nextInt();
        }
        input.close();
    }
}