[英](Java) Parsing a String into a 2D Array of Integers
這是我第一次在這里發布信息,請保持溫柔。
我得到了一個純文本文件,該文件在不同的行上有大量的數字。 (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....]
我該如何實現?
謝謝。
嘗試
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));
}
}
使用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
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.