帮助我理解此代码的最后部分,旨在打印序列中最大和次数最多的数字。我不完全理解的是,else if
声明有什么需要?与代码:获取序列中的最大和第二大数字
if (input > largest) {
secondLargest = largest;
largest = input;
应该不这样做的工作吗?它检查输入是否大于最大数字,将第二个Largest设置为前一个最大数字。并用输入的一个用户更新新的最大号码。
那么这行代码的目的究竟是什么呢?以及整数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;
}
考虑输入8,10,9 ...所以最大将被设置为8,第二最大设置为-1,然后是10,最大是10,第二大是8但是对于9,最大将保持10而第二大需要更新..也,我认为该程序想要允许0,所以它设置默认-1。 – vellvisher
如果'input> secondLargest'但是'!(input> largest)',那么没有'else if','secondLargest'将是不正确的。 – oldrinb
初始化为-1的原因是,显然有一个假设,即序列都是正数。零表示“序列结束”,-1表示“未找到”(或类似的东西)。 –