此示例显示了使用时如何验证输入java.util.Scanner。为了验证输入,Scanner该类提供了一些hasNextXXX()可用于验证输入的方法。例如,如果我们要检查输入是否为有效整数,可以使用该hasNextInt()方法。
在下面的代码片段中,将演示如何验证用户是否提供正整数。程序将重复执行,直到提供正确的输入为止。package org.nhooo.example.util;
import java.util.Scanner;
public class ScannerValidateInput {
public static void main(String[] args) {
ScannerValidateInput demo = new ScannerValidateInput();
demo.validatePositiveNumber();
}
private void validatePositiveNumber() {
Scanner scanner = new Scanner(System.in);
int number;
do {
System.out.print("Please enter a positive number: ");
while (!scanner.hasNextInt()) {
String input = scanner.next();
System.out.printf("\"%s\" is not a valid number.\n", input);
}
number = scanner.nextInt();
} while (number
System.out.printf("You have entered a positive number %d.\n", number);
}
}
代码段产生的输出:Please enter a positive number: qwerty
"qwerty" is not a valid number.
@@@
"@@@" is not a valid number.
-100
Please enter a positive number: 99
You have entered a positive number 99.
另一个示例是验证用户是否正确输入了字母来邀请一个秘密单词。在下面的代码段中,如果用户未输入字母,则该代码将继续要求输入有效的字母。循环直到输入字母的长度等于秘密单词的长度。private void validateLetter() {
String secretWord = "Hello";
Scanner scanner = new Scanner(System.in);
int length = 0;
StringBuilder guess = new StringBuilder();
do {
System.out.print("Enter a letter to guess: ");
char letter = scanner.next().charAt(0);
if (Character.isLetter(letter)) {
guess.append(letter);
length++;
}
} while (length
if (secretWord.equalsIgnoreCase(guess.toString())) {
System.out.println("You are correct!");
} else {
System.out.println("Please try again!");
}
}Enter a letter to guess: 1
Enter a letter to guess: 2
Enter a letter to guess: H
Enter a letter to guess: e
Enter a letter to guess: l
Enter a letter to guess: l
Enter a letter to guess: o
You are correct!