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

Java 构建时工作正常,运行时输出错误,java,Java,我经常遇到的运行时错误是 线程“main”java.util.InputMismatchException中的异常 位于java.util.Scanner.throwFor(Scanner.java:840) 下一步(Scanner.java:1461) 位于java.util.Scanner.nextInt(Scanner.java:2091) 位于java.util.Scanner.nextInt(Scanner.java:2050) 在lab4b2.main(lab4b2.java:12)

我经常遇到的运行时错误是

线程“main”java.util.InputMismatchException中的异常 位于java.util.Scanner.throwFor(Scanner.java:840) 下一步(Scanner.java:1461) 位于java.util.Scanner.nextInt(Scanner.java:2091) 位于java.util.Scanner.nextInt(Scanner.java:2050) 在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 第125页 F120 第7.2页 F56
M 100

此行出现错误:

amount = fileIN.nextInt();

文件中的第一个数字不是
int
,因此它会导致
输入不匹配异常。提供更多关于你想要获得更好答案的信息。

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

我认为错误在这里:

amount=fileIN.nextInt()

您读取的第一个数字是3.106,它不是整数。您可能需要进行以下更改:

float amount, conv;
amount = fileIN.nextFloat();
Java中的错误输出非常有助于引导您解决问题。这:

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

表示错误发生在文件lab4b.java的第12行。

lab4b2.txt中有什么内容?感谢您帮助我理解底部的混乱内容!非常感谢。您的家庭作业或学校项目假设正确。谢谢!我应该注意到这样的事情