home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BURKS 2
/
BURKS_AUG97.ISO
/
BURKS
/
LANGUAGE
/
JAVA
/
NOTES
/
SOURCE
/
threen2.jav
< prev
next >
Wrap
Text File
|
1996-12-20
|
3KB
|
92 lines
/* Simulation of console-I/O program ThreeN,
using ConsoleApplet as a basis. See the file
ConsoleApplet.java for more information.
David Eck
eck@hws.edu
August 11, 1996
*/
public class ThreeN2Console extends ConsoleApplet {
public void init() {
title = "Sample program \"ThreeN\" (#2)";
super.init();
}
final static int numberOfColumns = 5; // constant specifying number
// of terms on each output line
final static int columnWidth = 8; // constant specifying the width,
// in number of characters, of each
// column in the output
protected void program() {
/*
A program that computes and displays several 3N+1
sequences. Starting values for the sequences are
input by the user. Terms in a sequence are printed
in columns, with several terms on each line of output.
After a sequence has been displayed, the number of
terms in that sequence is reported to the user.
*/
console.putln("This program will print out 3N+1 sequences");
console.putln("for starting values that you specify.");
console.putln();
int K=0;
do {
console.putln("Enter a starting value;");
console.put("To end the program, enter 0: ");
K = console.getInt(); // get starting value from user
if (K > 0) // print sequence, but only if K is > 0
Print3NSequence(K);
} while (K > 0); // continue only if K > 0
} // end program()
void Print3NSequence(int startingValue) {
// prints a 3N+1 sequence on the console, using
// startingValue as the initial value of N
int N = startingValue; // N represents a term in the sequence.
int count = 1; // count is the number of terms found
int onLine = 1; // onLine counts terms on current output line.
console.putln("The 3N+1 sequence starting from " + N);
console.putln();
console.put(N, columnWidth); // print initial term of sequence
while (N > 1) {
N = nextN(N); // compute next term
count++; // count this term
if (onLine == numberOfColumns) { // if current output line is full
console.putln(); // then output a carriage return
onLine = 0; // and note that there are no terms on the new line
}
console.put(N, columnWidth); // print this term
onLine++; // add 1 to record of number of terms on this line
}
console.putln(); // end current line of output
console.putln(); // and then add a blank line
console.putln("There were " + count + " terms in the sequence.");
} // end of Print3NSequence()
int nextN(int currentN) {
// computes and returns the next term in a 3N+1 sequence
if (currentN % 2 == 1)
return 3 * currentN + 1;
else
return currentN / 2;
} // end of nextN()
} //end class GuessingGameConsole