从循环中查找最大数量

时间:2012-02-06 00:43:45

标签: java

我试图从循环中找到最大数量,并且它的出现次数。这是我到目前为止编写的代码。

public class MaxNumbers {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int max = 0;
        int number = 0;
        int count_max = 0;
        while (true) {
             number = input.nextInt();
            if (number == 0) {
                break;
            }
            number = max;
            if (max > number) {
                max=number;
                count_max++;
            }

        }
        System.out.println("Max Number: " + number);
        System.out.println("Occurences: " + count_max);
    } 

我输出中只有零,我正在做出任何逻辑错误?

6 个答案:

答案 0 :(得分:2)

这是我认为你想要实现的版本,它主要是有效的,请注意你必须开始输入数字,如果你开始使用它描述失败的字符串,还要注意大于{的数字。 {1}}被忽略或'修剪'

long

答案 1 :(得分:1)

是的,你有这条线:

number = max

接着是

if (max > number) {

max永远不会大于数字,因为你只是在前一行中将它们设置为相等

答案 2 :(得分:0)

删除第number = max

答案 3 :(得分:0)

代码存在一些问题。这应该适合你:

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int max = Integer.MIN_VALUE;
        int number = 0;
        int count_max = 0;
        while (true) {
            number = input.nextInt();
            if (number == 0) {
                break;
            }
            if(max == number){
                count_max++;
            }
            if (max < number) {
                max=number;
                count_max = 1;
            }
        }
        System.out.println("Max Number: " + max);
        System.out.println("Occurences: " + count_max);
    }

答案 4 :(得分:0)

我认为您需要修改“number = max”所在的行。你在那里的代码是每次循环时将number的值设置为max的值。由于第一次循环时它的值为0,因此它将无限期地保持为零。这意味着你的最大值永远不会改变。

所以你不想要那条线,但你确实想要它。 如果 具有与(==)max相同的值,则需要向count_max添加1。

最后一个If块也需要稍微调整一下。 如果你找到一个新的最高值(即数字&gt; max ,而不是相反),那么你需要重置你的count_max为1,而不是加1。

答案 5 :(得分:0)

这是代码的更正版本,并突出显示您的错误。

Scanner input = new Scanner(System.in);
int max = 0;
int number = 0;
int count_max = 0;
while (true) {
    number = input.nextInt();
    if (number == 0) {
        break;
    }
    // you are assigning number = max, and max is 0 initially, so number
    // =0;
    // number =max;
    // if number =0 and max =0 then below condition will never          // satisfied.
    if (max < number) {
        max = number;
        // it means every time when you have any number greater then the                // second one just add it.
            // count_max++;
            count_max = 0;
        }

    // This condition will make sure that only add count by 1 if max =
    // currentNum
    if (max == number) {

        count_max++;
    }

}
// You have written number instead of max down there.
System.out.println("Max Number: " + max);
System.out.println("Occurences: " + count_max);