【问题标题】:Reading a csv file and populating an array that holds objects from the file读取 csv 文件并填充包含文件中对象的数组
【发布时间】:2018-03-08 15:47:21
【问题描述】:

下面的代码有问题,当我在编译后运行它时,在线程“main”java.lang.NumberFormatException:空字符串中抛出异常。

import java.io.File;
import java.util.Scanner;
import java.io.FileNotFoundException;

class DamArrayApp {

    int num = 0;
    ObjDam[] data = new ObjDam[211];

    public void populateArray() {
        try {
            Scanner s = new Scanner(new File("DamLevels.csv"));
            String firstLine = s.nextLine();
            while (s.hasNext()) {
                String all = s.nextLine();
                String[] temp = all.split(",");
                String name = temp[2];
                double fscNum = Double.parseDouble(temp[10]);
                double damlvl = Double.parseDouble(temp[25]);
                data[num] = new ObjDam(name, fscNum, damlvl);
                num++;
            }
        } catch (FileNotFoundException e) {
            System.err.println("File was not found. Please make sure the file exists!");

        }
        System.out.println(data);
    }

    public void printDam(String damName) {
        boolean find = false;
        for (int i = 0; i < 211; i++) {
            ObjDam dam = data[i];
            if (dam.getDamName() == damName) {
                System.out.println("Dam Name: " + dam.getDamName()
                        + ", FSC: " + dam.getFsc()
                        + ", Dam Level: " + dam.getDamLevel());
                find = true;
            }
        }
        if (find == false) {
            System.out.println("The dam ___ you entered cannot be found in the file");
        }
    }

    public void printAllDams() {
    }

    public static void main(String[] args) {
        DamArrayApp run = new DamArrayApp();
        run.populateArray();
    }
}

我认为问题在于 populateArray() 方法。有任何想法吗? 注意:该文件包含有关大坝及其水位的大量详细信息,均以逗号分隔。

任何帮助将不胜感激。

【问题讨论】:

  • 请注意,您可能需要while(s.hasNextLine()) 而不是while(s.hasNext())
  • 这是一个非常具体的错误消息。你不明白怎么办?堆栈跟踪甚至应该告诉你行号。
  • 现在解决了,谢谢。对 Java 有点新,但你是对的,它确实告诉了我

标签: java arrays string exception


【解决方案1】:

它很可能是由 Double.parseDouble 方法抛出的,因为您尝试解析的字符串是空的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 2021-02-05
    相关资源
    最近更新 更多