Java exercise - display table with 2d array

Posted by TheHacker66 on Stack Overflow See other posts from Stack Overflow or by TheHacker66
Published on 2012-12-17T16:38:33Z Indexed on 2012/12/17 17:03 UTC
Read the original article Hit count: 177

Filed under:
|
|
|
|

I'm struggling to finish a java exercise, it involves using 2d arrays to dinamically create and display a table based on a command line parameter.

Example:

java table 5

+-+-+-+-+-+
|1|2|3|4|5|
+-+-+-+-+-+
|2|3|4|5|1|
+-+-+-+-+-+
|3|4|5|1|2|
+-+-+-+-+-+
|4|5|1|2|3|
+-+-+-+-+-+
|5|1|2|3|4|
+-+-+-+-+-+

What i have done so far:

public static void main(String[] args) {

    int num = Integer.parseInt(args[0]);

    String[][] table = new String[num*2+1][num];

    int[] numbers = new int[num];
    int temp = 0;

    for(int i=0; i<numbers.length; i++)
        numbers[i] = i+1;

        // wrong
    for(int i=0; i<table.length; i++){
        for(int j=0; j<num;j++){
            if(i%2!=0){
            temp=numbers[0];
            for(int k=1; k<numbers.length; k++){
                numbers[k-1]=numbers[k];
            }
            numbers[numbers.length-1]=temp;
            for(int l=0; l<numbers.length; l++){
            table[i][j] = "|"+numbers[l];
            }
            }
            else
                table[i][j] = "+-";
    }
    }

    for(int i=0; i<table.length; i++){
        for(int j=0; j<num; j++)
        System.out.print(table[i][j]);
        if(i%2==0)
            System.out.print("+");
        else
            System.out.print("|");

        System.out.println();}
}

This doesn't work, since it prints 1|2|3|4 in every row, which isn't what i need. I found the issue, and it's because the first for loop changes the array order more times than needed and basically it returns as it was at the beginning.

I know that probably there's a way to achieve this by writing more code, but i always tend to nest as much as possible to "optimize" the code while i write it, so that's why i tried solving this exercise by using less variables and loops as possible.

Thanks in advance for your help!

© Stack Overflow or respective owner

Related posts about java

Related posts about arrays