我一直遇到的运行时错误是
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
答案 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行。