Brandon_J
Brandon_J

Reputation: 195

"while" loop not iterating correctly

I am supposed to print the following output by using loops:

            1 
          2 1 
        3 2 1 
      4 3 2 1 
    5 4 3 2 1 
  6 5 4 3 2 1 
7 6 5 4 3 2 1 

The highest number in this pattern (in this example, 7) is determined by user input. Here is the applicable code for the pattern:

index=patternLength+1; n=1;     //These values are all previously intitialized
while (index!=1) {
    index--;
    printSpaces((index*2)-2);   //A static method that prints a certain number of spaces
    while(n!=1) {
        n--;
        System.out.print(n + " ");
    }
    System.out.print("\n");
    n=patternLength+1-index;
}

And here is the incorrect output for the user input "7":



        1 
      2 1 
    3 2 1 
  4 3 2 1 
5 4 3 2 1 

There are two blank lines preceding the incorrect output; these lines have the correct number of spaces necessary for the complete/correct pattern, but for some reason, the actual numbers start printing too "late" in the loop. In other words, the spaces that appear before the "1, 2 1" in the correct example are in the incorrect output. It's some of the numbers that are missing and make the incorrect example incorrect.

Upvotes: 0

Views: 126

Answers (2)

Madhuka Dilhan
Madhuka Dilhan

Reputation: 1416

Please try this code your second while loop is not correct.

int index = patternLength + 1;
        int n = 2;     //These values are all previously intitialized
        int i = 1;
        while (index != 1) {
            index--;
            printSpaces((index * 2) - 2);   //A static method that prints a certain number of spaces
            while (n != 1) {
                n--;
                System.out.print(n + " ");
            }
            System.out.print("\n");
            i++;
            n = i+1;
        }

Upvotes: 1

Brandon_J
Brandon_J

Reputation: 195

OK, I got it.

    index=patternLength+1; n=1;int nSetter=1;
    //Loop C
    System.out.println("Pattern C:");
    while (index!=1) {
        index--;
        printSpaces((index*2)-2);
        while(n!=0) {

            System.out.print(n + " ");
            n--;
        }
        System.out.print("\n");
        nSetter++;
        n = nSetter;
    }

My problem was that my "n" needed to go both up and down, so the extra variable "nSetter" seems to have solved that, although this may be a round-about solution. Whatever. Thanks to @Andreas for pointing me in the correct direction and @JohnKugelman for the helpful edit.

Upvotes: 1

Related Questions