Java Java 교과서의 질문 중 하나는 "사용자가 유효한 값을 입력하지 않고 즉시 센티넬 값을 처리 할 때 런타임 오류를 방지하는 Average 프로그램의 새 버전을 만듭니다 (목록 3.6)." 3.6 목록자바에서 센티널 값을 올바른 값으로 만드는 방법은 무엇입니까?
은 다음과 같습니다 :
import java.text.DecimalFormat;
import java.util.Scanner;
public class Average
{
public static void main (String[] args)
{
Scanner scan = new Scanner (System.in);
int sum = 0, value, count = 0;
double average;
System.out.println ("Enter an integer (0 to quit): ");
value = scan.nextInt();
while (value != 0) // sentinel value of 0 to terminate the loop
{
count++;
sum += value;
System.out.println ("The sum far is " + sum);
System.out.print ("Enter an integer (0 to quit): ");
value = scan.nextInt();
}
System.out.println();
System.out.println ("Number of values entered: " + count);
average = (double)sum/count;
DecimalFormat fmt = new DecimalFormat ("0.###");
System.out.println ("The average is " + fmt.format(average));
}
}
내가 어떤 질문을 요구하고있다 것은 0의 감시 값이 계산 될 수 있도록하는 것입니다 생각합니다. 센티넬 값을 입력 할 때 Listing 3.6의 결과를 보자.
는출력 :
Enter an integer (0 to quit):
0
Number of values entered: 0
The average is �
는 또한, 내가 대신이 Number of values entered: 0
말에, 나는 Number of values entered: 1
말을 생각 생각 생각합니다. 질문에서 무엇을 묻고 있는지 알고 있다고 생각되면 알려주십시오. 대단히 감사드립니다.
첫 번째 입력이 0이면 코드가 예외를 throw하지 않기 때문에 Yor 작업과 모순됩니다. 그러나 줄 _ "average = (double) sum/count;"_ was _ "average = sum/count ; "_. 그래서 나는 그 일이 잘못되었거나 이미 해결책을 가지고 있다고 제안한다. 그러나 당신이이 임무를 준 사람에게 질문하는 것이 항상 낫습니다. – Bogdan