0

私のコードでは、区切り文字として「\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)
4

4 に答える 4

1

それでも区切り文字として使用したい場合\nは、取得したテキストをトリミング後にキャストするだけです。


解決

int id = Integer.valueOf(scanner.next().trim());

または、単に区切り記号を取り除きます。

于 2015-12-12T14:14:44.013 に答える
0

区切り文字を設定すると問題が発生します。nextInt は予期される形式の一部として「\n」を検索しますが、スキャナーによって既に使用されています。

エンドユーザーにとってより厄介なアプローチが必要な場合は、おそらく次の文字列をスキャンしてトリミングし、自分で整数に変換する方がよいでしょう。

于 2015-12-12T14:17:57.123 に答える
0

ラインターミネータはOSによって異なるため。

  • Windows システムは「\r\n」を使用します
  • Linux システムでは "\n" を使用します

したがって、Windows でコードを実行している場合は、"\r\n" を区切り文字として使用する必要があります。しかし、Java が提供するより良いオプションがあります。

System.getProperty("line.separator");

だからあなたは使うべきです

scanner.useDelimiter(System.getProperty("line.separator"));
于 2015-12-12T14:56:18.253 に答える