2012-10-05 79 views
0

我遇到了输入验证码的问题。我输入我的种子值,它会提示我,但之后我必须输入另一个有效的输入,才能打印出我的菜单选项。每当我也选择其中一个菜单选项时,就会发生这种情况。Java输入需要两次

输入验证应该取1到5之间的整数值。所以如果有人在字母,负数或不在范围内的整数,它会要求他们放置一个,以便他们可以继续菜单选择。

我写错了代码吗?我想摆脱那些不必要的第二个输入,只需要一个就可以继续比赛。由于某种原因,我在10次作品后也会注意到这些值,尽管6-9被视为无效。我不知道为什么这是有效的。谢谢!

import java.util.Random; 
import java.util.Scanner; 

public class Sonowah 
{ 

    public static void main(String[] args) 
    { 
     Scanner in = new Scanner(System.in); 
     System.out.print("Please enter a seed value [integer]: "); 
     //assume input is integer for seed for RNG 
     int seed = in.nextInt(); 
     Random rng = new Random(seed); //RNG 

     int charge = 100; 

    //loop here 
    while (charge > 0) 
    {   
     int number; 
     do 
     { 
      while (!in.hasNextInt(5)) 
      { 
       System.out.println("Please enter valid interger"); 
       in.next(); 
      } 
      number = in.nextInt(); 
     } 
     while (number <= 0); 
     System.out.println("Interger is valid!"); 


      System.out.println("1. Surrender"); 
     System.out.println("2. Defend"); 
     System.out.println("3. Fight"); 
      System.out.println("4. Charge"); 
      System.out.println("5. Potions"); 
      String menuchoice = in.next(); 

      if (menuchoice.equals("1")) 
      { 
        statement 
       } 
+0

'main'的其余部分在哪里? – 2012-10-05 22:30:04

+0

发布代码时,有助于发布整个文件/类,以便我们提供更多的答案。 – Lipongo

+0

OP发布了足够的信息。其实太多了! –

回答

1

我不认为你的循环应该使用in.hasNextInt()...你已经问了许多用户,只是检查,如果这个数字是1到5之间Scanner.hasNextInt(5 )请求一个int用户,然后试图解释它的基数5.见documentation

+0

嗨。谢谢蒂姆,请求帮助!我没有意识到这是不需要的。整数现在工作得很好! – Sozziko

0

这里是你的问题:

do 
{ 
    while (!in.hasNextInt(5)) 
    { 
     System.out.println("Please enter valid interger"); 
     in.next(); 
    } 
    number = in.nextInt(); 
} 
while (number <= 0); 

基本上,所有这些代码是在休息的情况下没用你的程序代码。