应该运行打印最大和第二大的程序,但是在获取第二个值时遇到问题。认为我的布尔表达式是错误的,因为我一直得到0作为tempSecond。你能帮忙吗?
/*
* File: AddExamIntegers.java
* --------------------
* This program takes a list of integers until Sentinel,
* then prints the largest and second largest.
*/
import acm.program.*;
public class FindLargest extends ConsoleProgram {
public void run() {
println("This program takes a list of integers and then lists the largest and second largest");
println("");
println("Enter positive numbers using " + SENTINEL);
println("to signal the end of the list");
int tempHigh = 0;
int tempSecond = 0;
while (true) {
int value = readInt(": ");
if (value == SENTINEL) break;
if (tempHigh < value) {
tempHigh = value;
}
if ((tempSecond < value) && (tempSecond > tempHigh)) {
tempSecond = value;
}
}
println("The largest value is " + tempHigh);
println("The second largest value is " + tempSecond);
}
private static final int SENTINEL = 0;
}
答案 0 :(得分:3)
后者的第二部分永远不会成立:tempSecond > tempHigh
相反,这样做:
if(tempHigh < value)
{
tempHigh = value;
}
else if(tempSecond < value)
{
tempSecond = value;
}