Merge pull request #493 from authenticanttibrax/main

Add Java coding conventions to 20_Buzzword
This commit is contained in:
Jeff Atwood
2022-01-12 10:23:42 -08:00
committed by GitHub
3 changed files with 113 additions and 34 deletions

View File

@@ -1,41 +1,17 @@
import java.util.Scanner;
import static java.lang.System.out;
// This is very close to the original BASIC. Changes:
// 1) the array indexing is adjusted by 1
// 2) the user can enter a lower case "y"
// 3) moved the word list to the top 8~)
public class Buzzword {
private static final String[] A = {
"ABILITY","BASAL","BEHAVIORAL","CHILD-CENTERED",
"DIFFERENTIATED","DISCOVERY","FLEXIBLE","HETEROGENEOUS",
"HOMOGENEOUS","MANIPULATIVE","MODULAR","TAVISTOCK",
"INDIVIDUALIZED","LEARNING","EVALUATIVE","OBJECTIVE",
"COGNITIVE","ENRICHMENT","SCHEDULING","HUMANISTIC",
"INTEGRATED","NON-GRADED","TRAINING","VERTICAL AGE",
"MOTIVATIONAL","CREATIVE","GROUPING","MODIFICATION",
"ACCOUNTABILITY","PROCESS","CORE CURRICULUM","ALGORITHM",
"PERFORMANCE","REINFORCEMENT","OPEN CLASSROOM","RESOURCE",
"STRUCTURE","FACILITY","ENVIRONMENT"
};
private static Scanner scanner = new Scanner( System.in );
public static void main( final String [] args ) {
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.print( A[ (int)( 13 * Math.random() ) ] + " " );
out.print( A[ (int)( 13 * Math.random() + 13 ) ] + " " );
out.print( A[ (int)( 13 * Math.random() + 26 ) ] ); out.println();
out.print( "?" );
public static void main(final String[] args) {
try (
// Scanner is a Closeable so it must be closed
// before the program ends.
final Scanner scanner = new Scanner(System.in);
) {
final BuzzwordSupplier buzzwords = new BuzzwordSupplier();
final UserInterface userInterface = new UserInterface(
scanner, System.out, buzzwords);
userInterface.run();
}
while ( "Y".equals( scanner.nextLine().toUpperCase() ) );
out.println( "COME BACK WHEN YOU NEED HELP WITH ANOTHER REPORT!" );
}
}

View File

@@ -0,0 +1,39 @@
import java.util.Random;
import java.util.function.Supplier;
/**
* A string supplier that provides an endless stream of random buzzwords.
*/
public class BuzzwordSupplier implements Supplier<String> {
private static final String[] SET_1 = {
"ABILITY","BASAL","BEHAVIORAL","CHILD-CENTERED",
"DIFFERENTIATED","DISCOVERY","FLEXIBLE","HETEROGENEOUS",
"HOMOGENEOUS","MANIPULATIVE","MODULAR","TAVISTOCK",
"INDIVIDUALIZED" };
private static final String[] SET_2 = {
"LEARNING","EVALUATIVE","OBJECTIVE",
"COGNITIVE","ENRICHMENT","SCHEDULING","HUMANISTIC",
"INTEGRATED","NON-GRADED","TRAINING","VERTICAL AGE",
"MOTIVATIONAL","CREATIVE" };
private static final String[] SET_3 = {
"GROUPING","MODIFICATION", "ACCOUNTABILITY","PROCESS",
"CORE CURRICULUM","ALGORITHM", "PERFORMANCE",
"REINFORCEMENT","OPEN CLASSROOM","RESOURCE", "STRUCTURE",
"FACILITY","ENVIRONMENT" };
private final Random random = new Random();
/**
* Create a buzzword by concatenating a random word from each of the
* three word sets.
*/
@Override
public String get() {
return SET_1[random.nextInt(SET_1.length)] + ' ' +
SET_2[random.nextInt(SET_2.length)] + ' ' +
SET_3[random.nextInt(SET_3.length)];
}
}

View File

@@ -0,0 +1,64 @@
import java.io.PrintStream;
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;
/**
* Output to the user.
*/
private final PrintStream output;
/**
* 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 output The output to show messages to the user.
* @param buzzwords The buzzword supplier.
*/
public UserInterface(final Scanner input,
final PrintStream output,
final Supplier<String> buzzwords) {
this.input = input;
this.output = output;
this.buzzwords = buzzwords;
}
@Override
public void run() {
output.println(" BUZZWORD GENERATOR");
output.println(" CREATIVE COMPUTING MORRISTOWN, NEW JERSEY");
output.println();
output.println();
output.println();
output.println("THIS PROGRAM PRINTS HIGHLY ACCEPTABLE PHRASES IN");
output.println("'EDUCATOR-SPEAK' THAT YOU CAN WORK INTO REPORTS");
output.println("AND SPEECHES. WHENEVER A QUESTION MARK IS PRINTED,");
output.println("TYPE A 'Y' FOR ANOTHER PHRASE OR 'N' TO QUIT.");
output.println();
output.println();
output.println("HERE'S THE FIRST PHRASE:");
do {
output.println(buzzwords.get());
output.println();
output.print("?");
} while ("Y".equals(input.nextLine().toUpperCase()));
output.println("COME BACK WHEN YOU NEED HELP WITH ANOTHER REPORT!");
}
}