Time for some Java

Let’s take a simple program idea and refine it over the course of a few versions of the code. 

The program we are writing is meant to print a box made of asterisks.  The width and height of the box is based on a value entered by the user.  For example, if the user enters 3, the program would display the following:

***
***
***

However, if the user enters 5, the program would display the following:

*****
*****
*****
*****
*****

Version 1.0

In this version of the code, we are going to use nested loops to print the box. Here is the pseudocode:

Declare a Scanner named s
Declare an integer named size (used for size of rectangle)
Prompt the user to enter size of rectangle
size = read integer from the keyboard

loop from 0 to size - 1:
  loop from 0 to size - 1:
    print 1 asterisk without newline
  print a new line

And here’s the code.

import java.util.*;

public class StarsV01 {
  public static void main(String[] args) {

    Scanner s = new Scanner(System.in);
    int size = 0;

    System.out.println("This program will print a rectangle based on the value you enter.");
    System.out.print("Enter the size --> ");

    size = s.nextInt();

    // The outer loop handles each line of output, as in the number of lines to
    // output
    for (int i = 0; i < size; i++) {

      // the inner loop handles what is printed on each line of the output
      for (int j = 0; j < size; j++) {
        System.out.print("*");
      }
      System.out.println();

    }
  }
}

Here’s the output of running the program:

This program will print a rectangle based on the value you enter.
Enter the size --> 5
*****
*****
*****
*****
*****

Version 2.0

Now, let’s say we want to modify the program so the user can draw multiple boxes, not just 1 box.  The way we are going to do that is by enclosing the bulk of the code in a do-while loop. 

Here’s some pseudocode for that:

Declare a Scanner named s
Declare an integer named size (used for size of rectangle)
Declare an integer named choice (to be used for continuing)

loop:
  Prompt the user to enter size of rectangle
  size = read integer from the keyboard

  loop from 0 to size - 1:
    loop from 0 to size - 1:
      print 1 asterisk without newline
    print a new line
  Ask the user if they would like to draw another rectangle. 
  choice = read next integer from keyboard
while entered choice is to continue:

Now for the code.

import java.util.*;

public class StarsV02 {
  public static void main(String[] args) {

    Scanner s = new Scanner(System.in);
    int size = 0;
    int choice = 1;

    System.out.println("This program will print rectangles based on the value you enter.");

    do {
      System.out.print("Enter the size --> ");

      size = s.nextInt();

      // The outer loop handles each line of output, as in the number of lines to
      // output
      for (int i = 0; i < size; i++) {

        // the inner loop handles what is printed on each line of the output
        for (int j = 0; j < size; j++) {
          System.out.print("*");
        }
        System.out.println();
      }

      System.out.print("Would you like to draw another figure (1 for Y or 2 for N)? --> ");
      choice = s.nextInt();

    } while (choice != 2);
  }
}

Here is the output of the running of the program above:

This program will print rectangles based on the value you enter.
Enter the size --> 3
***
***
***
Would you like to draw another figure (1 for Y or 2 for N)? --> 1
Enter the size --> 5
*****
*****
*****
*****
*****
Would you like to draw another figure (1 for Y or 2 for N)? --> 1
Enter the size --> 2
**
**
Would you like to draw another figure (1 for Y or 2 for N)? --> 2

 

Speak Your Mind

*

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.