시퀀스에서 두 번째로 큰 숫자를 인쇄하는 것을 목표로하는이 코드의 마지막 부분을 이해하게 도와주세요. 내가 완전히 이해하지 못하는 것은 무엇입니까 else if
성명에 대한 필요성은 무엇입니까? 코드 :시퀀스에서 최대 및 두 번째로 큰 숫자 얻기
if (input > largest) {
secondLargest = largest;
largest = input;
해당 작업을 수행하지 않아야합니까? 입력이 최대 숫자보다 큰지 점검하고, 두 번째 가장 큰 숫자를 이전 가장 큰 숫자로 설정합니다. 입력 된 하나의 사용자로 새로운 가장 큰 번호를 업데이트하십시오.
그러면이 코드 줄의 목적은 정확히 무엇입니까? largest
및 secondLargest
의 정수가 0
이 아닌 -1
으로 설정된 이유는 프로그램을 중단하는 sentinel
과 관련이 있으며 0
으로 설정되어 있습니까?
} else if (input > secondLargest) {
secondLargest = input;
. input
가 largest
secondLargest
과 현재 값 사이에 떨어지는 곳
int largest = -1;
int secondLargest = -1;
while (true) {
int input = readInt(" ? ");
if (input == SENTINEL) break;
if (input > largest) {
secondLargest = largest;
largest = input;
} else if (input > secondLargest) {
secondLargest = input;
}
입력 8, 10, 9를 고려해보십시오. 최대 값은 8로 설정되고, 두 번째로 큰 값은 -1로 설정되고, 10은 최대 값이 10이고 두 번째로 큰 값은 8이지만 9의 경우 최대 값은 10 두 번째로 큰 업데이트가 필요합니다. 또한 프로그램에서 0을 허용하여 기본 -1을 설정한다고 생각합니다. – vellvisher
'input> secondLargest'하지만'! (input> largest)'인 경우'else if'가 없으면'secondLargest'가 올바르지 않습니다. – oldrinb
-1로 초기화하는 이유는 분명히 시퀀스가 모두 양수라는 가정 때문입니다. 0은 "시퀀스 끝"을 의미하고 -1은 "찾을 수 없음"(또는 이와 비슷한 것)을 의미합니다. –