1

さて、プログラミングの課題で大変困っています。テキスト ファイルから情報を読み取り、作成した特定のメソッドを使用してフォーマットします。テキストファイルの最初の行から情報を読み取ることはできますが、あとでエラーが発生します。私のコードは次のとおりです。

String name1 = scan.nextLine();
    String name2 = scan.nextLine();
    scan.close();
    int length = name1.length();
    int count = 0;
    int a = 0;
    int b = 1;
    while(end != true)
    {

        String check = name1.substring(a,b);
        a++;
        b++;
        count++;
        char z = check.charAt(0);
        if(z == '0' || z == '1' || z == '2' || z == '3' || z == '4' || z == '5' || z == '6' || z == '7' || z == '8' || z == '9')
        {
            end = true;

        }
        if(count == length)
        {
            end = true;

        }
    }
    String number1 = name1.substring(count,length);
    int number01 = Integer.parseInt(number1);
    name1=name1.substring(0, count-1);
    int d = name1.indexOf(" ");
    int length1 = name1.length();
    String name1first = name1.substring(0,d);
    name1first = name1first.trim();
    String name1last = name1.substring(d,length1);
    name1last = name1last.trim();

    System.out.println(name1first);
    System.out.println(name1last);
    System.out.println(number01);


    length = name2.length();
   int  countt = 0;
int  aa = 0;
int  bb = 1;
    while(end != true)
    {

        String check = name2.substring(aa,bb);
        aa++;
        bb++;
        countt++;
        char z = check.charAt(0);
        if(z == '0' || z == '1' || z == '2' || z == '3' || z == '4' || z == '5' || z == '6' || z == '7' || z == '8' || z == '9')
        {
            end = true;

        }
        if(countt == length)
        {
            end = true;

        }
    }
    String number2 = name2.substring(countt,length);
    int number02 = Integer.parseInt(number2);
    name2=name2.substring(0, countt-1);
    d = name2.indexOf(" ");
    int length2 = name2.length();
    String name2first = name2.substring(0,d);
    name2first = name2first.trim();
    String name2last = name2.substring(d,length2);
    name2last = name2last.trim();

    System.out.println(name2first);
    System.out.println(name2last);
    System.out.println(number02);

そして、私はこのエラーを受け取ります:

Exception in thread "main" java.lang.NumberFormatException: For input string: "Jennifer Sutter 52114"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Salary.main(Salary.java:101)
4

1 に答える 1

0

それは明らかですが、なぜその例外が発生するのかは明らかです。

「JenniferSutter52114」を整数に変換しようとしています。

try{}catch()解決策は、を呼び出そうとしているときに最初にブロックを使用することInteger.parseInt()です。

私が思うに、あなたは文字列の最後のビットを取得して整数に変換しようとしているのです。使用しているので、次のようにScannerできます。nextInt()

new Scanner(theStringWhichMightHaveANumber).nextInt();

于 2012-11-05T04:01:25.103 に答える