java.lang.NumberFormatException:用于使用scanner来读取文件时的输入字符串

时间:2014-06-29 06:38:04

标签: java eclipse

我不确定为什么我会收到此错误以及以下代码片段中的修复内容:

        String srcFile=args[0];
        Scanner fileIn = new Scanner(srcFile);
        //    if (fileIn.isFile() && fileIn.canRead())

        CarDB carDatabase = new CarDB();
        while(fileIn.hasNext())
        {       
          String[] line = fileIn.nextLine().split(",");
          double mpg = Double.parseDouble(line[0]);
          int cylinders = Integer.parseInt(line[1]);
          int power = Integer.parseInt(line[2]);
          int year = Integer.parseInt(line[3]);
          int region = Integer.parseInt(line[4]);
          String makerName = line[5].trim();
          String carName = line[6].trim();

          carDatabase.addCar(makerName, carName, mpg, cylinders, power, year, region);// add car
          carDatabase.addMaker(makerName);//add maker to list

        } 

和第36行是:double mpg = Double.parseDouble(line[0]);

错误是:

java CarDBMain cars.txt 
java.lang.NumberFormatException: For input string: "cars.txt"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1250)
    at java.lang.Double.parseDouble(Double.java:540)
    at CarDBMain.main(CarDBMain.java:36)

1 个答案:

答案 0 :(得分:3)

您正在使用此Scanner fileIn = new Scanner("cars.txt");,因此您的第一行将是"cars.txt"

 Scanner fileIn = new Scanner(new File(srcFile));//Or probably path of file

这里创建文件并将commandline argument表示文件路径传递给File构造函数并将该文件传递给Scanner

您正在将文件名称String传递给扫描程序。

构造

Scanner(File source)<---Takes File you want to read
Scanner(String source)<----Takes String you want to read
etc.