Franco Ferrari
Franco Ferrari

Reputation: 3

String to int array [][] - JAVA

I have a board game define as

boardArray = new int[4][4];

and I have a string in this format:

String s = "[[0,0,2,0],[0,0,2,0],[0,0,0,0],[0,0,0,0]]"

Is there a way to put it in the int array? Consider that it should look like this

[0,0,2,0]
[0,0,2,0]
[0,0,0,0]
[0,0,0,0]

Upvotes: 0

Views: 139

Answers (2)

timaschew
timaschew

Reputation: 16622

If you want to to it dynamically, I've written a librray: https://github.com/timaschew/MDAAJ The nice thing is, that it's really fast, because internally it's a one dimensional array, but provides you same access and much more nice features, checkout the wiki and and tests

MDDA<Integer> array = new MDDA<Integer>(4,4);

or initialize with an existing array, which is one dimensional "template", but will be converted into your dimensions:

Integer[] template = new Integer[] {0,0,2,0,  0,0,2,0,  0,0,0,0,  0,0,0,0};
MDDA<Integer> array = new MDDA<Integer>(template, false, 4,4);

//instead of array[1][2];
array.get(1,2); // 2

Upvotes: 0

Roney Michael
Roney Michael

Reputation: 3994

You could simply do the following:

String s = "[[0,0,2,0],[0,0,2,0],[0,0,0,0],[0,0,0,0]]";

String myNums[] = s.split("[^0-9]+");
//Split at every non-digit

int my_array[][] = new int[4][4];
for(int i = 0; i < 4; i++) {
    for(int j = 0; j < 4; j++) {
        my_array[i][j] = Integer.parseInt(myNums[i*4 + j + 1]);
        //The 1 accounts for the extra "" at the beginning.
    }
}

//Prints the result
for(int i = 0; i < 4; i++) {
    for(int j = 0; j < 4; j++)
        System.out.print(my_array[i][j]);
    System.out.println();
}

Upvotes: 2

Related Questions