java.util.InputMismatchException从文件读取错误,类型有什么问题?

时间:2013-08-16 12:41:27

标签: java netbeans-7

我正在学习Java for Dummies,我不知道为什么会出现这些错误。我用Google搜索了一些信息。

java.util.InputMismatchException表示我想读错类型的值。例如文件看起来像:

2543
Robert

我强制程序从第一行字符串中获取。 在我看来,我文件中的所有内容都是正确的。我将我的代码与书中的示例代码进行了比较,但我找不到任何错误。

我使用Netbeans。

文件“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);
    }
}

3 个答案:

答案 0 :(得分:1)

你的代码非常好。我在Java for Dummies书中遇到了同样的问题。

对我来说,问题在于文件的格式化。我还不是专家,所以我很抱歉无法进一步详细解释,但InputMismatchException被抛出,因为我使用.来分隔小数,而我的系统的标准小数是以,

分隔

我建议您尝试格式化文件:

Angela
nurse
2000,15

答案 1 :(得分:0)

if - EmployeeInfo.txt


安吉拉

护士

2000.23


在守则中 DoPayroll - 班级 payOneEmployee -functions第4行

anEmployee.setName(aScanner.nextLine()); //这条线将接受输入 - Angela
anEmployee.SetJobTitle(aScanner.nextLine()); //这将取零输入,因为第二行没有任何数据
    anEmployee.cutCheck(aScanner.nextDouble()); //这一行把输入作为 - 护士 //和"护士"在铸造时读取这条线后不是双倍的     从护士到duble它抛出java.util.InputMismatchException

答案 2 :(得分: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)));
        }

    }