```1   // Example 3.2 joi/examples/ForDemo.java
2   //
3   //
4   // Copyright 2003 Bill Campbell and Ethan Bolker
5
6   // A class illustrating the For-statement.  A typical run:
7   //
8   // %> java ForDemo
9   // Enter integer: 7
10  // 7 integers starting at 0: 0 1 2 3 4 5 6
11  // First 7 Fibonacci numbers   (for): 1 1 2 3 5 8 13
12  // First 7 Fibonacci numbers (while): 1 1 2 3 5 8 13
13  // 49 @'s:
14  // @@@@@@@
15  // @@@@@@@
16  // @@@@@@@
17  // @@@@@@@
18  // @@@@@@@
19  // @@@@@@@
20  // @@@@@@@
21
22  public class ForDemo
23  {
24      public static void main( String[] args )
25      {
26          Terminal terminal = new Terminal();  // for input and output
27
28          // Prompt for and read a single integer.
29          int n = terminal.readInt( "Enter integer:" );
30
31          terminal.print( n + " integers starting at 0:" );
32          for ( int i = 0; i < n; i++ ) {
33              terminal.print( " " + i );  // all one one line
34          }
35          terminal.println();             // the newline
36
37          // Build Fibonacci numbers 1, 1, 2, 3, 5, 8,
38          // by adding last two together to make the next
39          // Use three int variables and a loop:
40
41          int thisOne, lastOne, nextOne;
42          terminal.println( "First " + n + " Fibonacci numbers:" );
43
44          terminal.print("(for):               " );
45          thisOne = 1;
46          lastOne = 1;
47          for ( int i = 1; i <= n; i++ ) {
48              terminal.print( " " + lastOne );
49              nextOne = thisOne + lastOne;
50              lastOne = thisOne;
51              thisOne = nextOne;
52          }
53          terminal.println();
54
55          // Since i is never used in the body of the previous loop
56          // we can count down to get the same output:
57          terminal.print("(for, counting down):" );
58          thisOne = 1;
59          lastOne = 1;
60          for ( int counter = n; counter > 0; counter-- ) {
61              terminal.print( " " + lastOne );
62              nextOne = thisOne + lastOne;
63              lastOne = thisOne;
64              thisOne = nextOne;
65          }
66          terminal.println();
67
68          // Replace the for loop with a while loop
69          terminal.print("(while):             " );
70          thisOne = 1;
71          lastOne = 1;
72          int i = 1;
73          while ( i <= n ) {
74              terminal.print( " " + lastOne );
75              nextOne = thisOne + lastOne;
76              lastOne = thisOne;
77              thisOne = nextOne;
78              i++;
79          }
80          terminal.println();
81
82          terminal.println("Nested for loops: " + (n*n) + " @'s:" );
83          for ( int row = 1; row <= n ; row++ ) {
84              for ( int col = 1; col <= n; col++ ) {
85                  terminal.print( " @" );
86              }
87              terminal.println();
88          }
89      }
90  }
91  ```