java中没有scanner_如何使用java.util.Scanner验证输入?
小編典典
示例1:驗證正整數
這是一個hasNextInt()用于int從輸入中驗證肯定的簡單示例。
Scanner sc = new Scanner(System.in);
int number;
do {
System.out.println("Please enter a positive number!");
while (!sc.hasNextInt()) {
System.out.println("That's not a number!");
sc.next(); // this is important!
}
number = sc.nextInt();
} while (number <= 0);
System.out.println("Thank you! Got " + number);
結果:
Please enter a positive number!
five
That's not a number!
-3
Please enter a positive number!
5
Thank you! Got 5
請注意Scanner.hasNextInt(),與更詳細try/catch Integer.parseInt/ NumberFormatException組合相比,使用起來要容易得多。通過合同,一個Scanner 保證,如果它hasNextInt(),然后nextInt()將安靜地給你int,并不會引發任何NumberFormatException/ InputMismatchException/ NoSuchElementException。
示例2:hasNextXXX同一令牌上有多個
請注意,上面的代碼段包含一個sc.next()語句,以使Scanner直到它前進hasNextInt()。重要的是要意識到,沒有一種 hasNextXXX 方法可以 Scanner 超越任何輸入!你會發現,如果你從代碼段中省略了這一行,那么它將在無效輸入上陷入無限循環!
這有兩個結果:
如果你需要跳過“垃圾”輸入失敗的hasNextXXX測試,那么你需要提前Scanner一個這樣或那樣的(例如next(),nextLine(),skip等)。
如果一項hasNextXXX測試失敗,你仍然可以進行測試hasNextYYY!
這是執行多個hasNextXXX測試的示例。
Scanner sc = new Scanner(System.in);
while (!sc.hasNext("exit")) {
System.out.println(
sc.hasNextInt() ? "(int) " + sc.nextInt() :
sc.hasNextLong() ? "(long) " + sc.nextLong() :
sc.hasNextDouble() ? "(double) " + sc.nextDouble() :
sc.hasNextBoolean() ? "(boolean) " + sc.nextBoolean() :
"(String) " + sc.next()
);
}
輸出結果:
5
(int) 5
false
(boolean) false
blah
(String) blah
1.1
(double) 1.1
100000000000
(long) 100000000000
exit
請注意,測試順序很重要。如果是Scanner hasNextInt(),那么它也是hasNextLong(),但不一定true是相反的方式。通常,你想在進行更通用的測試之前先進行更具體的測試。
示例3:驗證元音
Scanner具有正則表達式支持的許多高級功能。這是一個使用它來驗證元音的示例。
Scanner sc = new Scanner(System.in);
System.out.println("Please enter a vowel, lowercase!");
while (!sc.hasNext("[aeiou]")) {
System.out.println("That's not a vowel!");
sc.next();
}
String vowel = sc.next();
System.out.println("Thank you! Got " + vowel);
輸出結果:
Please enter a vowel, lowercase!
5
That's not a vowel!
z
That's not a vowel!
e
Thank you! Got e
2020-01-10
總結
以上是生活随笔為你收集整理的java中没有scanner_如何使用java.util.Scanner验证输入?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于爬虫中常见的两个网页解析工具的分析
- 下一篇: 剖析管理所有大数据组件的可视化利器:Hu