当输入无效数字时,其他循环不起作用

时间:2015-02-18 00:47:32

标签: java if-statement while-loop

System.out.println("Enter number of dice to throw, an integer [2, 10]:  ");
Scanner keyboard = new Scanner (System.in); 
n = keyboard.nextInt();

//if the input is valid
if (n>1 && n<11)
{`
    System.out.println("good");
    Random rn = new Random(); 
    int random = rn.nextInt((6-1) +1) +1; 
    System.out.println("random number is " + random); 
}     
else 
{
    //if the users input is invalid
    while (n<2 && n>10)
    {
        System.out.println("error, must be in [2,10]  ");
        n = keyboard.nextInt(); 
    }
}

3 个答案:

答案 0 :(得分:5)

你的逻辑错误。数字n不能超过2 大于10。您希望小于2 大于10。使用||代替&&

while (n<2 || n>10)

答案 1 :(得分:0)

如果条件在&#34; if&#34;如果声明不符合,则默认情况下该程序不会转到“其他”状态。声明?所以你甚至需要while语句吗?

答案 2 :(得分:0)

实际上它确实输入'else'而不是'while'。因为n不能&lt; 2 AND&gt; 10同时。

替换

while (n<2 && n>10)

while (n<2 || n>10)