我有一个学校作业,将使用预制文本文件进行测试,该文件文件将数据提供给程序。我的问题是这个预制文本文件崩溃了程序,即使它在手动输入数据时没有问题。我设法在一个小得多的程序中重现了这个问题:
import java.util.Scanner;
import java.util.ArrayList;
public class DoubleTest {
public static void main(String[] args){
ArrayList<String> fNames = new ArrayList<>();
ArrayList<String> sNames = new ArrayList<>();
ArrayList<Double> scores = new ArrayList<>();
Scanner keyboard = new Scanner(System.in);
int i = 1;
while(i != 0){
System.out.println("First name (quit by typing 0): ");
String fName = keyboard.nextLine();
if(fName.equals("0")){
i = 0;
}else{
System.out.println("Result: ");
double score = keyboard.nextDouble();
keyboard.nextLine();
System.out.println("Last name: ");
String sName = keyboard.nextLine();
fNames.add(fName);
sNames.add(sName);
scores.add(score);
}
}
for(String s : fNames){
System.out.println(s);
}
for(String s : sNames){
System.out.println(s);
}
for(Double d : scores){
System.out.println(d);
}
}
}
现在,如果我只是简单地写输入,那么一切正常。但是,如果我使用预制文本文件,我只是复制粘贴它会引发异常。程序要求输入名字,然后是结果(双),然后是姓氏。然后您可以输入新的名字或输入0退出。这是文本文件
name1
20
name1
30
name2
40
name2
name3
50
name3
name4
60
name4
这是例外:
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.nextDouble(Unknown Source)
at DoubleTest.main(DoubleTest.java:21)
有关如何解决此问题的任何想法?而且,当我手动输入时,它不会抛出异常!