0

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 :)

1 Answer 1

2

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

Sign up to request clarification or add additional context in comments.

1 Comment

This worked perfectly! Thanks! I didn't even think to use string.split()

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.