0

应该运行一个打印最大和第二大的程序,但在获取第二个值时遇到问题。认为我的布尔表达式是错误的,因为我一直将 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;

}
4

1 回答 1

3

你后者的第二部分 if 永远不会是真的:tempSecond > tempHigh

相反,请执行以下操作:

        if(tempHigh < value)
        {
            tempHigh = value;
        }
        else if(tempSecond < value)
        {
            tempSecond = value;
        }
于 2012-08-05T09:38:55.453 回答