如何让程序在循环中获取变量? (Java)的

时间:2016-06-28 09:58:47

标签: java loops java.util.scanner

我正在制作一个要求你的年龄的计划,但它不起作用。 首先,它使用扫描仪模块询问您的年龄,并将您的年龄放入变量中。我想在你的年龄结束时输出,但它需要一个int,所以如果你输入一个字符串或其他东西就会出错:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at org.asking.age.main(asking.java:18)

我想让他说出而不是错误):请输入介于1和100之间的数字,如果输入其他内容,则输入1-100之间的数字。如果你输入了错误的号码,它必须重新启动,如果它是一个好号码,它必须结束。

我尝试了一个循环:

(i =扫描仪的年龄)

while(i>100 || i>0)
        {
            if (a < 100 || a > 0) {

                System.out.println("please only enter a number between 1 and 100");
                System.out.println("how old are you?");
                Scanner s = new Scanner(System.in);
                int a = s.nextInt();

        {
System.out.println("you are " + a + "years old") 
    }}}}}

但在开始的时候&#39;如果&#39;无法达到变量。有没有其他/任何方式来做到这一点?

感谢您的帮助,抱歉我的英语不好:)

感谢@TheLostMind帮助我获得此代码:

但是我不明白如何使用if(&gt; 0&amp;&amp;&lt; 100,并且匹配工作没有工作

public static void main(String[] args)  {
    System.out.println("how old are you?");

    Scanner h = new Scanner(System.in);
    String a= h.nextLine();

    String str = a;

    String matches=("\\d+");

    Integer.parseInt(a);



    {
do {


   System.out.println("please only enter a number between 1 and 100");
   System.out.println("how old are you?");
   h.nextLine();

} while(a>0 && a<100); }
}
}

3 个答案:

答案 0 :(得分:1)

  

首先,首先在外面对Scannerint a进行判断   循环。

     

接下来,使用scanner#nextLine()将整行输入读入   字符串。

     

然后使用String#matches("\\d+")Integer.parseInt(inputString)   将int解析为数字。

     

然后使用if(>0 && <100)检查。

Scanner类(hasNextInt())中有等待int的方法,但这并不是你想要的。

答案 1 :(得分:1)

你需要做这样的事情:

Declare Scanner and other Variable 

do {
   System.out.println("please only enter a number between 1 and 100");
   System.out.println("how old are you?");

   read variable value from Scanner
} while(check your condition on variable);

希望这有帮助。

答案 2 :(得分:1)

System.out.print和扫描程序中的问题应该在循环之外。 检查while循环,它表示&gt;而不是&lt; 100。