预写输入文本文件抛出异常(当输入是双精度时)

时间:2016-03-29 17:01:41

标签: java input double inputmismatchexception

我有一个学校作业,将使用预制文本文件进行测试,该文件文件将数据提供给程序。我的问题是这个预制文本文件崩溃了程序,即使它在手动输入数据时没有问题。我设法在一个小得多的程序中重现了这个问题:

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)

有关如何解决此问题的任何想法?而且,当我手动输入时,它不会抛出异常!

0 个答案:

没有答案