import acm.program.*;
public class FindRange extends ConsoleProgram {
// 처음 시작하는 sentinal 을 0이라고 저장한다
private static final int sentinal = 0;
public void run() {
/* You fill this in */
showMessage();
findRange();
}
// 시작하는 메세지를 보여준다.
private void showMessage() {
println("This program finds the smallest and largest integers in a list.\n"
+ "Enter values, one per line, using a to signal the end of the list.\n");
}
private void findRange() {
int firstNumber = readInt("?"); // 첫번째 숫자를 입력해라
if (firstNumber == sentinal) {
println("this is not a valid first value"); // 만약 첫번째 숫자에 0을 입력하면, 오류 메세지를 보여준다.
println("\n try again"); // 다시 입력할 수 있도록 "try again" 메세지를 보여준다.
findRange();
}
int smallestNumber = firstNumber; // 첫번째 기입하는 숫자는 가장 작은 숫자이다.
int largestNumber = firstNumber; // 첫번째 기입하는 숫자는 가장 큰 숫자이다.
while ( firstNumber != sentinal) { // 0이 아닐 때까지 입력해라
int secondNumber = readInt ("?"); // 그 다음 숫자를 물어본다.
if (secondNumber < smallestNumber) { // 만약 그 다음 숫자가 가장 작은 숫자보다 작으면
if (secondNumber != sentinal) {
smallestNumber = secondNumber; // 그 숫자가 가장 작은 숫자가 되어서 저장한다.
}
}
if (secondNumber > largestNumber) { // 만약 그 다음 숫자가 가장 큰 숫자보다 크면
if (secondNumber != sentinal) {
largestNumber = secondNumber; // 그 숫자가 가장 큰 숫자가 되어서 저장한다.
}
}
if(secondNumber == sentinal) { // 만약 그 다음 숫자가 0이면
println ("The smallest value is " + smallestNumber); // 저장되어있는 가장 작은 숫자를 보여준다.
println ("The largest value is " + largestNumber); // 저장되어있는 가장 큰 숫자를 보여준다.
firstNumber = sentinal; // while 문을 멈추기 위하여 첫번째 숫자에 "sentinal"을 부여한다.
println("\n one more chance");
findRange(); // 찾기가 끝나면 또다시 시작하도록 보여준다.
}
}
}
}