Convert 20_Buzzword to Java

The original version was a straight forward monolithic BASIC-to-Java
conversion. Updated to use common Java coding conventions.

 - Split the single static main method into classes. The static part
   only contains the bootstrap code for the game.
 - Split the word list into three arrays so that there is no need to
   use error-prone calculations when choosing the random words.
 - Placed the Scanner in a try-with-resources block to ensure that the
   scanner gets closed when it is no longer needed.
This commit is contained in:
Brax Antti (Oy Samlink Ab)
2022-01-12 14:26:18 +02:00
parent 2eab61fd1d
commit 3e9f1354b3
3 changed files with 106 additions and 34 deletions

View File

@@ -0,0 +1,57 @@
import static java.lang.System.out;
import java.util.Scanner;
import java.util.function.Supplier;
/**
* A command line user interface that outputs a buzzword every
* time the user requests a new one.
*/
public class UserInterface implements Runnable {
/**
* Input from the user.
*/
private final Scanner input;
/**
* The buzzword generator.
*/
private final Supplier<String> buzzwords;
/**
* Create a new user interface.
*
* @param input The input scanner with which the user gives commands.
* @param buzzwords The buzzword supplier.
*/
public UserInterface(final Scanner input,
final Supplier<String> buzzwords) {
this.input = input;
this.buzzwords = buzzwords;
}
@Override
public void run() {
out.println(" BUZZWORD GENERATOR");
out.println(" CREATIVE COMPUTING MORRISTOWN, NEW JERSEY");
out.println();
out.println();
out.println();
out.println("THIS PROGRAM PRINTS HIGHLY ACCEPTABLE PHRASES IN");
out.println("'EDUCATOR-SPEAK' THAT YOU CAN WORK INTO REPORTS");
out.println("AND SPEECHES. WHENEVER A QUESTION MARK IS PRINTED,");
out.println("TYPE A 'Y' FOR ANOTHER PHRASE OR 'N' TO QUIT.");
out.println();
out.println();
out.println("HERE'S THE FIRST PHRASE:");
do {
out.println(buzzwords.get());
out.println();
out.print("?");
} while ("Y".equals(input.nextLine().toUpperCase()));
out.println("COME BACK WHEN YOU NEED HELP WITH ANOTHER REPORT!");
}
}