读取文件并将值存储到两个数组中,每行一个

时间:2014-03-06 11:39:48

标签: java arrays split bufferedreader

我在这里得到了这段代码:

   try{

        FileReader file = new FileReader("/Users/Tda/desktop/ReadFiles/tentares.txt");

        BufferedReader br = new BufferedReader(file);


        String line = null;


        while((line = br.readLine()) != null){


            String[] values = line.split(",");

            grp1 = new int[values.length]; 


            for(int i=0; i<grp1.length; i++){
                try {
                    grp1[i]= Integer.parseInt(values[i]);

                }catch (NumberFormatException e) {
                    continue;
                }
            }               
            System.out.println(Arrays.toString(grp1));

        }

        System.out.println("");

        br.close();

    }catch(IOException e){
        System.out.println(e);
    }

这是文件即时阅读所包含的内容。

       grp1:80,82,91,100,76,65,85,88,97,55,69,88,75,97,81 
       grp2:72,89,86,85,99,47,79,88,100,76,83,94,84,82,93

现在我将值存储到一个int数组中。 但是,如果我想将每行值存储到两个数组中?

考虑以某种方式使用Arrays.CopyOfRange,并从int数组中复制值 分成两个新阵列。

2 个答案:

答案 0 :(得分:2)

此答案与您的问题不符,但会在您的问题帖子中提示我的评论。

在while循环的开头尝试:

  1. 使用String.IndexOf()在每行中查找char :的第一个出现位置。这将是第二部分的开始索引。
  2. 从新的起始索引致电String.Substring()line.length。这将为您提供没有字符的行,并且您的第一个数字不会丢失。

答案 1 :(得分:0)

while

之前
List<int[]> groups = new ArrayList<>();

在循环结束之前:

groups.add(grp1);

然后:

for (int[] grp : groups) {
    ...
}

List对于不断增长的“数组”非常有用。

groups.size()     grp1.length
groups.get(3)     grp1[3]
groups.set(3, x)  grp1[3 = x