繁体   English   中英

依次获得最大和第二大数字

[英]Getting largest and second largest number in a sequence

帮助我理解此代码的最后一部分,该部分旨在按顺序打印最大和第二大数字。 我不完全了解的是, else if语句有什么需要? 与代码:

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

那应该做得不好吗? 它检查输入是否大于最大数字,将第二个“最大”设置为前一个最大数字。 并在输入一个用户的情况下更新新的最大号码。

那么,这行代码的确切目的是什么? 并且任何将integer 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;
     }

按顺序尝试程序

    1 2 3 5 4

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

else if代码处理情况下, input下降的当前值之间的largestsecondLargest

else if部分是,在情况的input比不大于largest ,但大于secondLargest时, secondLargest应该改变,即使largest也不会。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM