解析文件并将单独的行拆分为2d数组

时间:2019-05-17 05:53:09

标签: java file

我有一个文本文件,其中每个字符串都包含一行数字,例如203,我有一个2d数组int puzzle[][]

文件的行在数组列表Arraylist<String>行中。数组列表中的第一个String进入puzzle [0]。第二个String进入拼图[1],依此类推。

我遇到的问题是,在将行拆分后,我无法将这些数字转换为整数,因为它给了我-1的数字格式例外,如果我也将其拆分为-和1。

我尝试了以下操作,还制作了字符串数组的深层副本,然后将每个字符串转换为整数

public void parseFile(ArrayList<String> lines)
  {

     ArrayList<String> l = lines;
     for(int i =0; i<puzzle.length; i++)
         puzzle[i][0] = Integer.parseInt(l.get(i).split(""));
 }

它应该给我二维整数数组

1 个答案:

答案 0 :(得分:0)

这里是一种方法,该方法将获取由一位数字组成的字符串列表,并将该列表转换为2d的int数组。该代码不使用Java 8流。

public static int[][] parseFile(List<String> lines) {
    int[][] result = new int[lines.size()][];

    int multiplier = 1;
    int counter = 0;
    for (String line : lines) {
        List<Integer> row = new ArrayList<>();
        for (int i = 0; i < line.length(); i++) {
            char c = line.charAt(i);
            if (c == '-') {
                multiplier = -1;
                continue;
            } 
            int n = (int)c - 48; 
            row.add(n * multiplier);
            multiplier = 1;
        }
        int[] rowArray = new int[row.size()];
        for (int j = 0; j < row.size(); j++) {
            rowArray[j] = row.get(j);
        }
        result[counter] = rowArray;
        counter++;
    }
    return result;
}

下面是我的测试代码,从main执行

List<String> list = new ArrayList<>();
list.add("-111");
list.add("2-13");

int[][] result = parseFile(list);
for (int i = 0; i < result.length; i++) {
    for (int j = 0; j < result[i].length; j++) {
        System.out.printf("%d ", result[i][j]);
    }
    System.out.print("\n");
}

输出

  

-1 1 1
  2 -1 3