1

このコードの最後の部分で、シーケンス内で最大の数値と 2 番目に大きい数値を出力することを目的としていることを理解してください。私が完全に理解していないのは、else ifステートメントの必要性は何ですか? コードで:

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

それは適切な仕事をするべきではありませんか?入力が最大数より大きいかどうかをチェックし、2 番目の Largest を前の最大数に設定します。入力した1人のユーザーで新しい最大数を更新します。

では、このコード行の目的は何なのでしょうか? また、整数が に設定されているだけでなく、 に設定されている何らかの理由でlargestsecondLargestプログラム-10sentinel設定されていると関係があり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;
     }
4

3 に答える 3

3

シーケンスでプログラムを試してください

    1 2 3 5 4

省略した場合else if (input > secondLargest) { secondLargest = input; }、結果は maximum=5 および secondLargest=3 になります。これは正しくありません。

于 2012-09-16T06:38:00.353 に答える
1

このelse ifコードは、 と の現在の値の間にあるケースを処理しinputます。largestsecondLargest

于 2012-09-16T06:35:07.150 に答える
1

そのelse if部分は、が より大きくinputなく よりもlargest大きいsecondLargest場合、secondLargestが変更されなくても が変更される必要があるlargest場合です。

于 2012-09-16T06:36:29.360 に答える