【问题标题】:read file and put to some arrays读取文件并放入一些数组
【发布时间】:2013-05-10 12:54:48
【问题描述】:

我在一个文件中有这些行:

101 xxx 3 yyy
102 aaa 2 bbb
103 ppp 3 qqq
104 iii 5 jjj

我想把每一行的每个元素放在一个数组中,例如

int[] par1 = {101,102,103,104}
String[] par2 = {"xxx", "aaa", "ppp", "iii"}
int[] par3 = {3,2,3,5}
String[] par4 = {"yyy", "bbb", "qqq", "jjj"}

【问题讨论】:

  • 您的数组代表列而不是行还是我弄错了?
  • 您忘记粘贴代码了。 . .. .?
  • @Sirko 是的,你是对的
  • @Aquillo 我不知道
  • Scanner (next / nextInt) 和 ArrayList (add)(而不是数组)可能是最简单的方法(或 LinkedList 以提高效率)。

标签: java arrays string


【解决方案1】:

使用 Guava / Apache Commons 等阅读行:

结果:

List<String> lines;

下一步(使用lines):

List<Integer> par1 = new ArrayList();
List<String> par2 = new ArrayList();
List<Integer> par3 = new ArrayList();
List<String> par4 = new ArrayList();

try {
    for(String line : lines) {
        String[] elements = line.split(" ");
        if(elements.length == 4) {
            par1.add(Integer.valueOf(element[0])); 
            par2.add(element[1]));
            par3.add(Integer.valueOf(element[2]));
            par4.add(element[3]));
        }
        else {
            throw new Exception("Conversion failed");
        }
    }
}
catch(NumberFormatException ex) {
    throw new Exception("Conversion failed");
} 

// Convert ArrayList to Array if you need to.

【讨论】:

  • 将所有行读入List,真的吗?这根本没有(空间)效率。
  • 谢谢,请确保我搜索了一个小时。
  • @Dukeling:这可能是通过遍历线条来完成此任务的最简单方法。如果您有更好的解决方案,请分享:)
  • @Aquillo 根据我对问题的评论,请使用Scanner (next / nextInt)。说得比这多得多,我喜欢做的作业太多了。
【解决方案2】:

这样的东西应该可以工作(没有测试)

    List<String> lines = Files.readAllLines(Paths.get("1.txt"), StandardCharsets.UTF_8);
    int[] par1 = new int[lines.size()];
    String[] par2 = new String[lines.size()];
    int[] par3 = new int[lines.size()];
    String[] par4 = new String[lines.size()];
    for(int i = 0; i < lines.size(); i++) {
        String[] a = lines.get(i).split(" +");
        par1[i] = Integer.parseInt(a[0]);
        par2[i] = a[1];
        par3[i] = Integer.parseInt(a[2]);
        par4[i] = a[4];
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 2020-03-28
    相关资源
    最近更新 更多