JAVA:读取.txt文件并将其存储到数组中

JAVA:读取.txt文件并将其存储到数组中,java,arrays,file,loops,Java,Arrays,File,Loops,我已经有了下面的代码,它甚至可以添加double Scanner sc1 = new Scanner(System.in); try { System.out.println("Enter filename:"); String name = sc1.nextLine();//determines name of file File file = new File(name);//creates above file FileReader fileR

我已经有了下面的代码,它甚至可以添加double

Scanner sc1 = new Scanner(System.in);

try {

    System.out.println("Enter filename:");
    String name = sc1.nextLine();//determines name of file
    File file = new File(name);//creates above file     
    FileReader fileReader = new FileReader(file);//file is read 
    BufferedReader bufferedReader = new BufferedReader(fileReader );//BufferReader reads file, line by line
    StringBuffer stringBuffer = new StringBuffer();//appended to StringBuffer
    String line;//reads each 

    while ((line = bufferedReader.readLine()) != null) 
    {
        stringBuffer.append(line + "\n");           
    }

    fileReader.close();
    System.out.println("Contents of file:");
    System.out.println(stringBuffer.toString());

    } 

catch (IOException e) 
{
    e.printStackTrace();
}
该代码读取一个文件,该文件的每一行上都有一个double

例:

一,

二,

三,

四,

五,


如何将这些双精度数据存储到数组中?

您可以使用ArrayList:

ArrayList<Double> doubles = new ArrayList<Double>();
while ((line = bufferedReader.readLine()) != null) 
{
    doubles.add(Double.parseDouble(line));        
}
ArrayList doubles=新的ArrayList();
而((line=bufferedReader.readLine())!=null)
{
doubles.add(Double.parseDouble(line));
}
基本解决方案

    ArrayList<Double> doubles = new ArrayList<>();
    while ((line = bufferedReader.readLine()) != null)
    {
        stringBuffer.append(line + "\n");
        try{
            double value = Double.parseDouble(line );
            doubles.add(value);
        } catch(NullPointerException e){
            //null string
        } catch(NumberFormatException e){
            //no parsable on the current line
        }
    }
ArrayList doubles=新的ArrayList();
而((line=bufferedReader.readLine())!=null)
{
stringBuffer.append(行+“\n”);
试一试{
double value=double.parseDouble(行);
双倍。加(值);
}捕获(NullPointerException e){
//空字符串
}捕获(数字格式){
//当前行上没有可解析项
}
}

我不明白这个问题……只要在读取文件时创建一个存储行内容的数组。

如果您想坚持只使用数组,请将StringBuffer转换为String[],如下所示:

    String [] stringArray = stringBuffer.split("\n");  
然后将字符串数组转换为双数组:

    Double [] doubleArray = new Double[stringArray.size];
    for(int i=0 : i < stringArray.size : i++){  
        doubleArray[i] = Doube.parseDouble(stringArray[i]);  
    }
Double[]doubleArray=新的双精度[stringArray.size];
对于(int i=0:i
如果必须使用StringBuffer,则可以按StringTokenizer类将其划分为数组。

或者,您可以使用String代替StringBuffer,然后
split()
方法将与反限制器一起工作。

我以前从未使用过ArrayList。我注意到上面没有声明数组,所以我想知道如何将上述代码实现到特定数组中?将最终结果保存到字符串中,使用String.split()将其拆分为数组。对于答案,我很抱歉,误解了您要查找的内容。使用ArrayList,您根本不需要StringBuffer。我在代码中实例化了数组,您可以准确地复制它。如果您需要打印ArrayList的值的帮助,只需谷歌“打印ArrayList的值”即可,谢谢。我想继续使用数组,我使用了你的代码。但是它告诉我方法split(“\n”)是未定义的。此外,我不能直接将字符串数组中的元素转换为双数组dataArray[I]=stringArray[I];我已经更新了我的答案。字符串数组现在应该转换为Double。对于split(),您有两个选项,如主文章中突出显示的。