Stackuser999
Stackuser999

Reputation: 13

Trying to properly print an array in Java

I am new to Programming so bear with me if I do not properly present my issue. I have an assignment to create a program to assign integer values 1-25 to a 25 element integer array. I need to print the array as five separate lines with each line containing 5 elements separated by commas. The last element does not have a comma following it. The final output should be as follows:

1,2,3,4,5

6,7,8,9,10

11,12,13,14,15

16,17,18,19,20

21,22,23,24,25

The code that I came up with comes close, but it's not quite right. The code that I came up with is:

public class Test2 {

/**
 * @param args
 *            the command line arguments
 */
    public static void main(String[] args) {
        int[] numbers = new int[25];
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = i + 1;

            System.out.print(numbers[i] + ",");
            if (i % 5 == 0 && i > 0)
                System.out.println();

        }
    }
}

The printout that I get from my code is as follows:

1,2,3,4,5,6,

7,8,9,10,11,

12,13,14,15,16,

17,18,19,20,21,

22,23,24,25,

I am not sure why I am getting 1-6 on the first line as well as how to remove the comma at the end of each line. Any help pointing out my errors would be appreciated.

Upvotes: 1

Views: 584

Answers (4)

Felipe
Felipe

Reputation: 266

The error is that you are checking if int i is divisible by 5 (i % 5), not numbers[i] (numbers[i] % 5). This way, your code prints:

number 1 when i = 0,
number 2 when i = 1,
number 3 when i = 2,
number 4 when i = 3,
number 5 when i = 4,
number 6 when i = 5

and finally prints line break.

The correct code is:

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

    System.out.print(numbers[i]);
    if (numbers[i] % 5 == 0 && i > 0) {
        System.out.println();
    } else {
        System.out.print(",");
    }
}

The above code will print (as intended):

1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
16,17,18,19,20
21,22,23,24,25

Upvotes: 1

Nipun Talukdar
Nipun Talukdar

Reputation: 5387

Replace

if (i % 5 == 0 && i > 0)

with

if (i % 5 == 4)

Upvotes: 0

Makoto
Makoto

Reputation: 106430

You're close. Very close.

Consider what your condition is checking - you want to inspect a value i, and want to stop when that particular value is divisible by 5 but is nonzero.

The problem is that you have the wrong value - i isn't what you want, but numbers[i]. The reason: each number in numbers[i] is offset of i by 1.

What you want to do is check if numbers[i] is divisible by 5. You still need to check for a nonzero i, though.

if(numbers[i] % 5 == 0 && i > 0) {
    System.out.println(numbers[i]);
} else {
    System.out.print(numbers[i] + ",");
}

Upvotes: 1

Dawood ibn Kareem
Dawood ibn Kareem

Reputation: 79838

You're getting 6 numbers on the first line, because you start counting at i=0, and only print the newline once i=5; at which point the number you've just printed is 6, not 5 - you're printing i+1 in each iteration.

If you made your logic such that it printed EITHER a comma OR a newline but not both, you'd get rid of the commas at the ends of the lines.

Upvotes: 1

Related Questions