如何避免按几次输入会影响输入数据?

时间:2014-02-23 20:52:25

标签: java

我正在写一个JAVA类来验证输入数据,特别是整数。 我开发的类运行正常,但是当我按下多次进入然后输入一个char类型时,它会显示几次“Error !! Invalid number。再试一次。”我想避免它。

我使用了nextLine()方法,但它似乎无法纠正它。

这是班级:

package chapter07.libro;

import java.util.Scanner;

public class Validator_integer 

{

    public static int getInt (Scanner scanner, String promt)

    {
        int numberInteger = 0;
        boolean isValid = false;

        System.out.println(promt);
        while(isValid == false)
        {
            if(scanner.hasNextInt())
            {
                numberInteger= scanner.nextInt();
                isValid = true;
            }//if

            else
            {
                System.out.println("Error!! Invalid number. Try again.");
            }//else
            scanner.nextLine();         
        }//while

        return numberInteger;   
    }//getInt

}//Validator_integer

接下来是使用该类的应用程序:

package chapter.prueba;

import java.util.Scanner;

import chapter07.libro.Validator_integer;

public class Test_Validator_Integer

{

    public static void main(String[] args) {

        Scanner sc = new Scanner (System.in);
        String choice = "y";

        while(choice.equalsIgnoreCase("y"))
        {
            int number = Validator_integer.getInt(sc, "Enter integer number: ");
            System.out.println(number);

            System.out.println("Continue (y/n): ");
            choice = sc.next();

        }//while

    }//main

}//Test_Validator_Integer

我得到的结果是下一个:

Enter integer number: 

2

2

Continue (y/n): 

y

Enter integer number: 

(Here I press several time enter)

xx

Error!! Invalid number. Try again.

Error!! Invalid number. Try again.

Error!! Invalid number. Try again.

Error!! Invalid number. Try again.

2

2

Continue (y/n): 

n

所以(错误!!无效号码。再试一次。)显示多次,是我想避免的那一部分。

有人知道如何解决它吗??? 在此先感谢!!!

1 个答案:

答案 0 :(得分:0)

在从System.in读取之前,请确保“清除”它的内容以消除缓冲/排队输入。如果有n个字符排队,那么跳过那么多字符,你需要输入新内容。

int n = System.in.available();
System.in.skip(n);

http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html