我构建它时工作正常,运行时输出错误

时间:2014-02-05 15:17:40

标签: java

我一直遇到的运行时错误是

Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:840) at java.util.Scanner.next(Scanner.java:1461) at java.util.Scanner.nextInt(Scanner.java:2091) at java.util.Scanner.nextInt(Scanner.java:2050) at lab4b2.main(lab4b2.java:12)

我的代码是

import java.util.*;
import java.io.*;
public class lab4b2
{
    public static void main (String [] args)
        throws IOException
    {
        Scanner fileIN = new Scanner(new File("lab4b2.txt"));
        char unit;
        double amount,conv;
        unit = fileIN.next().charAt(0);
        amount = fileIN.nextInt();
        switch (unit)
        {
            case 'p': conv = amount*4.9;
                System.out.printf("%.2f pounds = %.2f newtons",amount,conv);
                 break;
            case 'P': conv = amount*4.9; 
                System.out.printf("%f pounds = %f newtons",amount,conv);
                 break;
            case 'f': conv = amount*0.30488; 
                System.out.printf("%f feet = %f meters",amount,conv);
                 break;
            case 'F': conv = amount*0.30488;
                System.out.printf("%f feet = %f meters",amount,conv);
                 break;
            case 'm': conv = amount*1.61; 
                System.out.printf("%f miles = %f kilometers",amount,conv);
                 break;
            case 'M': conv = amount*1.61; 
                System.out.printf("%f miles = %f kilometers",amount,conv);
                 break;
            default: System.out.println("Please enter the possible units only."); 
                break;
        }
    }
}

有什么问题? 这只是在我点击运行后才发生的。如果有帮助,我正在使用JCreator。 我认为问题出在printf的某处,但我没有看到任何合理的答案。 我的文件输入是 M 3.106 P 125 F 120 P 7.2 F 56 M 100

3 个答案:

答案 0 :(得分:1)

此行发生错误:

amount = fileIN.nextInt();

文件中的第一个数字不是int,因此会导致InputMismatchException。提供有关您想要达到的目标的更多信息,以获得更好的答案。

答案 1 :(得分:0)

这听起来像某人的家庭作业或学校项目。也就是说,您的问题在第12行。您正在扫描一个int,但数据文件有3.106,这不是一个int。

答案 2 :(得分:0)

我相信错误在这里:

amount = fileIN.nextInt();

您读取的第一个数字是3.106,不是int。您可能希望进行以下更改:

float amount, conv;
amount = fileIN.nextFloat();

Java中的错误输出非常适合引导您进入问题行。这样:

java.util.Scanner.nextInt(Scanner.java:2050) at lab4b2.main(lab4b2.java:12)

表示错误发生在filelab4b.java第12行。