扫描仪不适用于Double输入,但仅当我将输入用作字符串时,才可以使用

问题描述 投票:-1回答:3

如果我使用相同的代码,但是将ArrayList类型更改为String,则一切正常。我需要从文件输入的数据位于double(类型)中,以便我可以对其进行处理。我正在从具有多行6 elements per row 由]分隔的逗号(',')(不包含“,”的文本文件中读取数据行的结尾。示例:

7.4,2.127,121.4,101,81,0.88.3,1.736,137.2,101,81,0.811.8,4.25,108.5,100.4,67,1.910.5,4.141,147.1,99.8,79,1.7

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) throws FileNotFoundException {

        Scanner scan = new Scanner (new File("databasee.txt"));

        ArrayList<Double> var1 = new ArrayList<>();
        ArrayList<Double> var2 = new ArrayList<>();
        ArrayList<Double> var3 = new ArrayList<>();
        ArrayList<Double> var4 = new ArrayList<>();
        ArrayList<Double> var5 = new ArrayList<>();
        ArrayList<Double> var6 = new ArrayList<>();

        scan.useDelimiter(",|\n");
            for (int i = 0; i<1456; i ++) {

                 var1.add(scan.nextDouble());
                 var2.add(scan.nextDouble());
                 var3.add(scan.nextDouble());
                 var4.add(scan.nextDouble());
                 var5.add(scan.nextDouble());
                 var6.add(scan.nextDouble());


            System.out.println( var1.get(i) + "  " + var2.get(i) + "  " + var3.get(i) + "  " + var4.get(i) + "  " + var5.get(i) + "  " + var6.get(i));
            }

        scan.close();
    }

}

如果我使用相同的代码,但将ArrayList类型更改为String,则一切正常。我需要从文件输入的数据为双精度(类型),以便可以对其进行处理。我正在从...

java arraylist double
3个回答
0
投票

我没有对第一台扫描仪使用分号,因此它使用scan.next()读取每一行,我使用其String为每行创建另一台扫描仪,第二台扫描仪使用分号“,”(逗号)进行分隔,然后我使用nextDouble()读取并将其存储在临时di变量中,以存储在数组列表中并打印。


0
投票

而不是使用单独定义多个ArrayList的方法,可以使用类似这样的方法


-2
投票

我建议您阅读一行并以逗号分隔

© www.soinside.com 2019 - 2024. All rights reserved.