我正在尝试读取一个文本文件,然后使用Java中的nextInt()函数在循环中打印出整数。我的文本文件格式为:
a 2000 2
b 3000 1
c 4000 5
d 5000 6
这是我的代码:
public static void main(String[] args) throws FileNotFoundException {
String fileSpecified = args[0] + ".txt";
FileReader fr = new FileReader(fileSpecified);
BufferedReader br = new BufferedReader (fr);
Scanner in = new Scanner (br);
while (in.hasNextLine()) {
System.out.println ("next int = " + in.nextInt());
}
}
我总是得到的错误是:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
每次在任何程序中使用nextInt()时都会出现此错误。
答案 0 :(得分:6)
我认为会找到人物,例如“a”,“b”,“c”是一个字符串,未能将其作为int。你可以通过调试来解决这个问题:
System.out.println ("next value= " + in.next());
//System.out.println ("next int = " + in.nextInt());
您也可以使用API保护来防止这种情况。
if(in.hasNextInt()) {
System.out.println ("next int = " + in.nextInt());
}
答案 1 :(得分:2)
hasNextLine并不意味着下一个值是int。您发布的输入文件包含例如" a",这不是一个int。
答案 2 :(得分:2)
你可能想要这样的东西:
while (in.hasNext()) {
System.out.println("letter = " + in.next());
System.out.println("integer1 = " + in.nextInt());
System.out.println("integer2 = " + in.nextInt());
}