0

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

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

0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789
0123456789

我已经设法将它加载到我的 Java 应用程序中并使用..打印出来

System.out.println(stringBuffer.toString());

这会将文件打印到命令行,没有问题。

但我似乎无法将其解析为二维数组中的整数?

[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....]

我怎样才能做到这一点?

谢谢你。

4

3 回答 3

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;
}
于 2013-10-11T10:30:06.167 回答
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
于 2013-10-11T10:01:51.980 回答
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));
    }

}
于 2013-10-11T09:54:50.337 回答