我正在尝试通过错误检查验证我的代码。我想确保输入的整数不包含字母或更多。 这是我的代码。我应该使用一维数组来解决这个问题。我得到了代码工作,但我在添加错误检查时遇到问题。 任何帮助,将不胜感激。感谢
public void getNumbers() {
Scanner keyboard = new Scanner(System.in);
int array[] = new int[5];
int count = 0;
int entered = 0;
int k = -1;
while (entered < array.length) {
System.out.print("Enter a number ");
int number = keyboard.nextInt();
if (10 <= number && number <= 100) {
boolean containsNumber = false;
entered++;
for (int i = 0; i < count; i++) {
if (number == array[i]) // i Or j
{
containsNumber = true;
}
}
if (!containsNumber) {
array[count] = number;
count++;
} else {
System.out.println(number + " has already been entered");
}
} else {
System.out.println("number must be between 10 and 100");
}
//what does %d do?
for (int j = 0; j < count; j++) {
System.out.printf("%d ", array[j]);
}
System.out.println();
}
}
}
答案 0 :(得分:2)
我假设您希望程序在第一次输入数字时要求用户重新输入数字。在这种情况下,您可能希望尝试以下内容:
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number: ");
while(!sc.hasNextInt()) {
//print some error statement
sc.nextLine();
}
int number = sc.nextInt();
System.out.println("Number is: " + number); // to show the value of number
// continue using number however you wish
由于hasNextInt()
返回一个布尔值,确定输入是否为整数,程序将永远不会离开while循环,直到程序可以确认用户已输入整数。
答案 1 :(得分:0)
keyboard.nextInt()
将抛出InputMismatchException
。
如果您想检查Scanner
是否有要读取的整数,可以使用keyboard.hasNextInt()
。
或者,您可以将输入读作
String s = keyboard.next()
将输入作为字符串,然后使用s.matches(".*\\d+.*")
检测它是否为整数。
更新:回答问题 -
keyboard.hasNextInt()
将返回一个布尔值。例如,在System.out.print("Enter a number")
之后,您可以使用if
语句检查keyboard
是否可以接收数字输入,即。 if(keyboard.hasNextInt)
。如果这是真的,那意味着用户输入了数字输入,您可以继续说int number = keyboard.nextInt()
。如果为false,则表示用户输入为非数字。