繁体   English   中英

将具有随机生成值的csv文件读取到Java中

[英]Reading a csv file with random generated values into Java

首先,我在Excel中使用Rand()公式生成了一个随机值列表,并将该列表转换为Csv文件格式,当在Java中读取此csv时,出现错误:

Exception in thread "main" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at SatelliteView.UrlSatelliteImage.main(UrlSatelliteImage.java:60)

我不确定如何解决此错误,因为我创建的任何其他列表都可以正常工作:

File file = new File(csvFile); //创建一个文件,使我们能够读取位置文件的内容

    try {           
        Scanner sc = new Scanner(file);
        sc.useDelimiter("\n"); 
        sc.next(); // ignores header row            
        while (sc.hasNext()) {  // loops through csv
            String csvRows = sc.next(); // streams next line
            String[] csvLocations = csvRows.split(",");                                 

            String latitude = csvLocations[0];              
            double x = Double.parseDouble(latitude);                
        String longitude = csvLocations[1];
            double y = Double.parseDouble(longitude);

            System.out.println(csvLocations[0] + " " + csvLocations[1]);            
        }
        sc.close();
    } catch (FileNotFoundException e) {

        e.printStackTrace();

现在,输出读取并打印出所有必需的值,但有异常错误。 代码本身可以与手动输入的普通csv文件值配合使用,但是我不确定使用Rand()公式生成这些值是否还创建了一些需要以某种方式省略的新东西。 有人有想法吗? 先感谢您。

错误状态为java.lang.NumberFormatException: empty Stringat sun.misc.FloatingDecimal.parseDouble(Unknown Source)

因此,这意味着您正在尝试将empty String解析为Double

这附在这里

double x = Double.parseDouble(latitude);                

或在这里

double y = Double.parseDouble(longitude);

因此,基本上,您正在读取的字符串可能不包含任何坐标(可能是空行)。 将您的while循环更改为此,它可能会起作用。 (我还添加了更多日志,因此您可以看到发生了什么)

while (sc.hasNext()) {  // loops through csv

    String csvRows = sc.next();
    // print out the line value to see what we are dealing with
    System.out.println("rawTextValue: " + csvRows);            

    // if the line is not empty
    if(!csvRows.isEmpty()) {

        String[] csvLocations = csvRows.split(",");                                 
        System.out.println(csvLocations[0] + " " + csvLocations[1]);            

        String latitude = csvLocations[0];
        double x = Double.parseDouble(latitude);                
        System.out.println("x: " + x);            

        String longitude = csvLocations[1];
        double y = Double.parseDouble(longitude);
        System.out.println("y: " + y);            
    }
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM