帮助我理解此代码的最后一部分,该部分旨在打印序列中最大和第二大的数字。我不完全理解的是,else if
声明需要什么?代码:
if (input > largest) {
secondLargest = largest;
largest = input;
应该不能正常工作吗?它检查输入是否大于最大数字,将第二个最大值设置为前一个最大数字。并使用一个用户输入更新新的最大号码。
那么这行代码究竟是什么目的呢?以及整数largest
和secondLargest
设置为-1
而不仅仅是0
的任何原因都与设置中断程序的sentinel
有关到0
?
} else if (input > secondLargest) {
secondLargest = input;
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;
}
答案 0 :(得分:3)
使用序列
尝试您的程序 1 2 3 5 4
如果省略else if (input > secondLargest) { secondLargest = input; }
,则结果将是最大= 5和secondLargest = 3,这是不正确的。
答案 1 :(得分:1)
else if
代码处理input
介于largest
和secondLargest
的当前值之间的情况。
答案 2 :(得分:1)
else if
部分如果input
不大于largest
但大于secondLargest
,则secondLargest
即使largest
不会。