FindRange

2022 ワード

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();  // 찾기가 끝나면 또다시 시작하도록 보여준다.

        }
    }
}
}