艺术与艺术Java的科学第4章练习13

时间:2012-08-05 09:34:52

标签: java

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

}

1 个答案:

答案 0 :(得分:3)

后者的第二部分永远不会成立:tempSecond > tempHigh

相反,这样做:

        if(tempHigh < value)
        {
            tempHigh = value;
        }
        else if(tempSecond < value)
        {
            tempSecond = value;
        }