簡體   English   中英

我無法在代碼中找出“ Java InputMismatchException錯誤”

[英]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”
  • Linux系統使用“ \\ n”

因此,如果您在Windows上運行代碼,則應使用“ \\ r \\ n”作為分隔符。 但是java提供了一個更好的選擇。

System.getProperty("line.separator");

所以你應該使用

scanner.useDelimiter(System.getProperty("line.separator"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM