获得序列中最大和第二大的数字

时间:2012-09-16 06:31:12

标签: java sequence max

帮助我理解此代码的最后一部分,该部分旨在打印序列中最大和第二大的数字。我不完全理解的是,else if声明需要什么?代码:

 if (input > largest) {
        secondLargest = largest;
        largest = input;

应该不能正常工作吗?它检查输入是否大于最大数字,将第二个最大值设置为前一个最大数字。并使用一个用户输入更新新的最大号码。

那么这行代码究竟是什么目的呢?以及整数largestsecondLargest设置为-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;
     }

3 个答案:

答案 0 :(得分:3)

使用序列

尝试您的程序
    1 2 3 5 4

如果省略else if (input > secondLargest) { secondLargest = input; },则结果将是最大= 5和secondLargest = 3,这是不正确的。

答案 1 :(得分:1)

else if代码处理input介于largestsecondLargest的当前值之间的情况。

答案 2 :(得分:1)

else if部分如果input不大于largest但大于secondLargest,则secondLargest即使largest不会。