【问题标题】:I read my text file, now how do I store the values into a 2D array?我读了我的文本文件,现在如何将值存储到二维数组中?
【发布时间】:2016-09-09 01:18:13
【问题描述】:

如前所述,我已经设法读取文件,我正在寻找一种方法来添加到二维数组。这是我读到的:

20 10 8

4.5 8.45 12.2

8.0 2.5 4.0

1.0 15.0 18.0

3.5 3.5 3.5

6.0 5.0 10.0

import java.io.*;
import java.util.*;
public class Packages 
{

    public static void main(String[] args)throws IOException,FileNotFoundException
    {
        BufferedReader reader = new BufferedReader(new FileReader("Dimensions.txt"));
        while (true) 
        {
            String line = reader.readLine();
            if(line==null);
            {
                 break;
            }
        System.out.println(line);

        }
        reader.close();  
    }

}

【问题讨论】:

    标签: java multidimensional-array


    【解决方案1】:

    以下解决方案使用二维数组来存储文件中的数字。如果您的输入结构已知且定义明确,这将是一个合适的解决方案。我的意思是每一行都有三个数字,你也知道有多少行。如果没有,那么您可能希望在此处使用 Java 集合类。

    public static void main(String[] args) throws IOException, FileNotFoundException {
        // change this value to whatever row count you actually have
        int NUM_ROWS = 100;
        double[][] array = new double[NUM_ROWS][3];
        BufferedReader reader = new BufferedReader(new FileReader("Dimensions.txt"));
    
        int counter = 0;
        while (true) {
            String line = reader.readLine();
            if (line == null) break;
            String[] parts = line.trim().split("\\s+");
            for (int i=0; i < 3; ++i) {
                array[counter][i] = Double.parseDouble(parts[i]);
            }
    
            System.out.println(line);
            ++counter;
        }
        reader.close();  
    }
    

    【讨论】:

    • for (int i=0; i &lt; 3 &amp;&amp; i &lt; part.length; ++i)
    • @ScaryWombat 不,如果输入文件的结构可能有不同宽度的列,我认为我们甚至不应该使用数组。
    • 天啊,我认为我们根本不应该使用数组,即使列数不变,但是输入文件确实会弄乱,应该进行安全检查。如果文件超过 100 行或有人在文件中途意外删除了 CRLF,您的代码将失败。
    • 检查输入文件中的错误与使用数组还是使用集合关系不大。
    【解决方案2】:
    1. 创建一个扫描仪来读取行,Scanner scanner = new Scanner(line)。
    2. 创建一个循环读取下一项,scanner.next() 或 scanner.nextDouble(),而它有下一项。
    3. 通过维护lineNumber 和doubleCount 的计数,将每个元素放入给定位置的数组中。如果您不知道尺寸大小,则必须执行一个循环来计算每一行,另一个循环计算该行中有多少双精度数。

    【讨论】:

      猜你喜欢
      • 2020-12-19
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 2021-12-19
      • 2021-05-18
      • 1970-01-01
      相关资源
      最近更新 更多