(Java)将字符串解析为二维整数数组

(Java)将字符串解析为二维整数数组,java,arrays,string,integer,2d,Java,Arrays,String,Integer,2d,这是我第一次在这里发帖,所以请温柔一点 我得到了一个纯文本文件,在不同的行上有数字的累积。(10x10网格) 我已经成功地将其加载到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,

这是我第一次在这里发帖,所以请温柔一点

我得到了一个纯文本文件,在不同的行上有数字的累积。(10x10网格)

我已经成功地将其加载到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));
    }

}
导入java.util.array;
公开课考试{
公共静态void main(字符串[]args)引发FileNotFoundException{
StringBuffer StringBuffer=新的StringBuffer(“0123456789\n 0123456789\n 0123456789\n 0123456789\n 0123456789\n 0123456789\n 0123456789\n 0123456789\n 0123456789\n 0123456789\n 0123456789\n 0123456789\n 0123456789\n 0123456789”);
字符串str[]=stringBuffer.toString().split(“\n”);
int[]arr=新int[str.length][];

对于(int i=0;i使用
String.tocharray()
方法:

// 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
//将一行读入'numString'后
char[]charList=numString.toCharArray();
int[]intList=newint[charList.length];
for(inti=0;i
public int[]to2D(字符串值){
字符串[]linesArray=value.split(“\n”);
int[][]数组2d=新的int[linesArray.length]];
对于(int i=0;i
但我更喜欢使用集合(在这种情况下是ArrayList):

public ArrayList to 2dlist(字符串值){
ArrayList ArrayList 2D=新的ArrayList();
字符串[]行=value.split(“\n”);
用于(字符串行:行){
ArrayList ArrayList 1d=新的ArrayList();
for(字符位数:line.toCharArray()){
arrayList1d.add(Character.getNumericValue(digit));
}
arrayList2d.add(arrayList1d);
}   
返回arrayList2d;
}

显示其余代码将有助于其他人帮助您。当您说“我似乎无法解析它”时,您面临的问题到底是什么?您是否可以向我们显示一些代码、错误消息或堆栈跟踪?我尝试了这种方法,但在输出方面似乎收到了垃圾。arr[I]包含给定字符串的2D int数组…不确定您所指的是垃圾
// 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;
}
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;
}