0

Java for Dummies から学習していますが、これらのエラーが発生する理由がわかりません。私はいくつかの情報をググった。

java.util.InputMismatchException間違ったタイプの値を読みたいということです。たとえば、ファイルは次のようになります。

2543
Robert

そして、プログラムが最初の行の文字列から取得するように強制します。私の意見では、ファイル内のすべてが正しく見えます。自分のコードを本のサンプル コードと比較しましたが、間違いは見つかりませんでした。

私はネットビーンズを使用しています。

ファイル「EmployeeInfo」は次のようになります。

Angela 
nurse 
2000.23

メインクラス:

import java.util.Scanner;
import java.io.File;
import java.io.IOException;
public class DoPayroll {       
    public static void main(String[] args)   throws IOException{
        Scanner diskScanner = new Scanner (new File("EmployeeInfo.txt"));
        payOneEmployee(diskScanner);
    }

    static void payOneEmployee(Scanner aScanner)
    {
        Employee anEmployee = new Employee();

        anEmployee.setName(aScanner.nextLine());
        anEmployee.SetJobTitle(aScanner.nextLine());
        anEmployee.cutCheck(aScanner.nextDouble());
        aScanner.nextLine();
    }
}

クラス:

public class Employee {
    private String name;
    private String jobTitle;

    public void setName(String mName)
    {
        name = mName;
    }
    public String GetName()
    {
        return name;
    }
    public  void SetJobTitle(String mJobTitle)
    {
        jobTitle =  mJobTitle;
    }
    public String GetJobTitle()
    {
        return jobTitle;
    }

    public void cutCheck(double amountPaid)
    {
        System.out.printf("Pay to the order of %s", name);
        System.out.printf("%s ***€", jobTitle);
        System.out.printf("%,.2f\n", amountPaid);
    }
}
4

3 に答える 3

0

場合 - EmployeeInfo.txt


アンジェラ

ナース

2000.23


コード
DoPayroll - class
payOneEmployee -functions 行番号 4 で

anEmployee.setName(aScanner.nextLine()); // この行は入力を受け取ります - Angela
anEmployee.SetJobTitle(aScanner.nextLine()); // 2 行目にデータがないため、入力はゼロになります
anEmployee.cutCheck(aScanner.nextDouble()); // この行は次のように入力を受け取ります -
ナース

于 2013-08-16T13:02:01.517 に答える
0

このように書くこともできます

static void payOneEmployee(Scanner aScanner)
    {
        Employee anEmployee = new Employee();

        List<String> employeeValueList = new ArrayList();
        while (aScanner.hasNext())
        {
            employeeValueList.add(aScanner.next());
        }

        if (!employeeValueList.isEmpty())
        {
            anEmployee.setName(employeeValueList.get(0));
            anEmployee.SetJobTitle(employeeValueList.get(1));
            anEmployee.cutCheck(new Double(employeeValueList.get(2)));
        }

    }
于 2013-08-16T13:02:38.523 に答える