[英]I can't figure out the “Java InputMismatchException errors” in my code
在我的代碼中,我使用“ \\ n”作為分隔符,因為用戶的輸入字符串中可能有一些“空格”。 但是出現了一個例外,我是Java的新手,我很困惑,所以我非常感謝您的幫助。
我的代碼是:
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
scanner.useDelimiter("\n");
System.out.print("Please enter your ID:");
int id=scanner.nextInt();
System.out.print("Please enter your address:");
String address=scanner.next();
}
}
並輸出:
Please enter your ID:20151212
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at learning.ScannerDemo.main(ScannerDemo.java:12)
如果您仍想使用\\n
作為分隔符,則只需在修剪后將所得到的文本進行轉換即可。
int id = Integer.valueOf(scanner.next().trim());
或者干脆擺脫定界符。
設置定界符會導致問題-nextInt將“ \\ n”作為預期格式的一部分進行查找,但掃描儀已將其使用。
如果您想使用一種更適合最終用戶的方法,最好掃描下一個字符串,修剪它並自己轉換為Integer。
使用scanner.nextLine(),然后使用trim()並轉換為int。
由於行終止符隨OS的不同而不同。
因此,如果您在Windows上運行代碼,則應使用“ \\ r \\ n”作為分隔符。 但是java提供了一個更好的選擇。
System.getProperty("line.separator");
所以你應該使用
scanner.useDelimiter(System.getProperty("line.separator"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.