我有一个文本文件,其中每个字符串都包含一行数字,例如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(""));
}
它应该给我二维整数数组
答案 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