Ethan Ethan - 1 month ago 7
Java Question

How to populate a 2D array in Java using user input?

I am trying to populate a two dimensional array in Java by using a user-inputted string. I have already got the string and I have figured out how to create the array. I am just having trouble figuring out how to get the values into the array. In case you are wondering, yes I have to use an array. Here is what I have so far:

private static int[][] parseTwoDimension(String strInput)
{
int rows = 0; //number of rows in the string

for (int i = 0; i < strInput.length(); i++)
{
if (strInput.charAt(i) == '!') //the ! is an indicator of a new row
{
rows++;
}
}

int[][] arr = new int[rows][]; //create an array with an unknown number of columns
int elementCounter = 0; //keep track of number of elements
int arrayIndexCounter = 0; //keep track of array index

for (int i = 0; i < strInput.length(); i++)
{
if (strInput.charAt(i) != '!') //while not the end of the row
{
elementCounter++; //increase the element count by one
}
else //reached the end of the row
{
arr[arrayIndexCounter] = new int[elementCounter]; //create a new column at the specified row
elementCounter = 0; //reset the element counter for the next row
arrayIndexCounter++; //increase the array index by one
}
}
/*
This is where I need the help to populate the array
*/
char c; //each character in the string
int stringIndex = -1; //keep track of the index in the string
int num; //the number to add to the array
for (int i = 0; i < arr.length; i++)
{
for (int j = 0; j < arr[i].length; j++)
{
stringIndex++; //increment string index for next element
c = strInput.charAt(stringIndex); //the character at stringIndex
if (c == '!') //if it is the end of the row, do nothing
{

}
else //if it is not the end of the row...
{
String s = Character.toString(c); //convert character to String
num = Integer.parseInt(s); //convert String to Integer
arr[i][j] = num; //add Integer to array
}
}
}
return arr; //return a two dimensional array the user defined
}


Any help is greatly appreciated :)

Answer

I've edited your code and posted it below. This is a general outline of how to solve it:

  1. Use string.split("!") to separate your String by the delimiter '!'. This returns an array

  2. Then, use string.split("") to separate the String into individual characters

Code posted below:

private static int[][] parseTwoDimension(String strInput)
{
String[] rows = strInput.split("!");

int[][] arr = new int[rows.length()][];

for(int i = 0; i<rows.length; i++)
{
String[] elements = rows[i].split("");
int[] intElements = new int[elements.length];
for(int j = 0; j<elements.length; j++)
{
intElements[j] = Integer.parseInt(elements[j]);
}
arr[i] = intElements;
}
}

Let me know if this works. The string.split() function is really useful when parsing Strings into arrays