(Java)将字符串解析为2D整数数组

时间:2013-10-11 09:42:42

标签: java arrays string integer 2d

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

我收到了一个纯文本文件,其中包含不同行的数字累积。 (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....]

我怎样才能做到这一点?

谢谢。

3 个答案:

答案 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;
}