Java使用扫描程序时如何验证输入?
此示例显示了使用时如何验证输入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 < 0); 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 < secretWord.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!