这是我第一次在这里发帖,所以请保持温和。
我收到了一个纯文本文件,其中包含不同行的数字累积。 (10x10网格)
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
我已设法将其加载到我的Java应用程序中并使用..
打印出来System.out.println(stringBuffer.toString());
这会将文件打印到命令行,没有任何问题。
但我似乎无法通过2D数组中的整数解析它?
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
0, 1, 2, 3, 4, 5, 6, 7, 8, 9....]
我怎样才能做到这一点?
谢谢。
答案 0 :(得分:0)
试
import java.util.Arrays;
public class test {
public static void main(String[] args) throws FileNotFoundException {
StringBuffer stringBuffer = new StringBuffer("0123456789 \n 0123456789 \n 0123456789 \n 0123456789 \n 0123456789 \n 0123456789 \n 0123456789\n 0123456789 \n 0123456789 \n 0123456789 \n 0123456789 \n 0123456789\n0123456789\n0123456789");
String str[]= stringBuffer.toString().split("\n");
int[][] arr = new int[str.length][];
for(int i=0;i<str.length;i++){
String currentLine=str[i].trim();
int[] temp = new int[currentLine.length()];
for(int j=0;j<currentLine.length();j++){
temp[j] = Character.getNumericValue(currentLine.charAt(j));
}
arr[i]=temp;
}
System.out.println(Arrays.deepToString(arr));
}
}
答案 1 :(得分:0)
使用String.toCharArray()
方法:
// after reading a line into 'numString'
char [] charList = numString.toCharArray();
int [] intList = new int [charList.length];
for(int i = 0; i < intList.length; i++) {
intList[i] = charList[i] - '0';
// now you have the ints from the line into intList
答案 2 :(得分:0)
public int[][] to2D(String value) {
String[] linesArray = value.split("\n");
int[][] array2d = new int[linesArray.length][];
for (int i = 0; i < linesArray.length; i++) {
char[] lineArray = linesArray[i].toCharArray();
int[] array1d = new int[lineArray.length];
for (int j = 0; j < lineArray.length; j++) {
array1d[j] = Character.getNumericValue(lineArray[j]);
}
array2d[i] = array1d;
}
return array2d;
}
我更喜欢使用Collections(在这种情况下是ArrayList):
public ArrayList<ArrayList<Integer>> to2DList(String value) {
ArrayList<ArrayList<Integer>> arrayList2d = new ArrayList<ArrayList<Integer>>();
String[] lines = value.split("\n");
for (String line : lines) {
ArrayList<Integer> arrayList1d = new ArrayList<Integer>();
for (char digit : line.toCharArray()) {
arrayList1d.add(Character.getNumericValue(digit));
}
arrayList2d.add(arrayList1d);
}
return arrayList2d;
}