我正在写一个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
所以(错误!!无效号码。再试一次。)显示多次,是我想避免的那一部分。
有人知道如何解决它吗??? 在此先感谢!!!
答案 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