该程序旨在让用户输入一系列数字,直到用户输入我设置为值 0 的哨兵。在用户输入哨兵后,程序应该打印其中的最高数字和次高数字列表。我遇到的麻烦是我希望第二高的数字是它打印 0 。
有没有更优雅的方法通过使用 ?: 运算符来解决这个问题?是否可以?
import acm.program.*;
public class LargestAndSecondLargest extends ConsoleProgram {
public void run() {
int a = 0;
int b = 0;
while (true) {
int value = readInt(" ?: ");
if (value == SENTINEL) break;
if (value > a) {
a = value;
}
else if (value > b) {
b = value;
}
}
println("the largest value is " + a);
println("the second largest number is" + b);
}
private static final int SENTINEL = 0;
}