最大值和出现次数。

时间:2015-10-04 19:18:45

标签: java count max

在我的实验室中,我们必须输入用户输入的数字,直到输入“0”。然后程序将找到最大值,计算出现次数,并输出两个数字。

这是我的代码:

  Scanner scan = new Scanner(System.in);

  int max = Integer.MIN_VALUE, count = 0, num;

  System.out.println ("Enter a number (Enter a 0 to stop): ");
     num = scan.nextInt();

  while (num != 0){
     System.out.println ("Enter a number: ");
     num = scan.nextInt();
     if (num >= max){
        max = num;
        count ++;
     }
  }
     System.out.println("\nMax number was: " + max);
     System.out.println("Number of occurences: " + count);

现在当它输出时,有时我会得到正确的答案,有时候却没有。我想我只是把循环错了或者计数器需要重置,但我无法弄明白。

例如:

如果我输入:3,5,2,5,5,5,0

输出显示:     最大数量为:5     发生次数:4

但如果我输入:3,5,9,2,5,9,0

输出显示: 最大数量是:9 发生次数:3

只是寻找一些建议。非常感谢帮助:D

4 个答案:

答案 0 :(得分:2)

如果是num > max,那么它是第一次出现的最大值,count应该设置为1.如果num == max,那么它是另一次出现的最大值,{{1应该增加。

此外,正如@doelleri在评论中正确提到的那样,第一个数字会被忽略。

答案 1 :(得分:1)

此处使用的最佳循环是do...while

以下是对您的代码的更正:

只有找到新的count时,您才必须重置max变量。

          do{
             System.out.println ("Enter a number: ");
             num = scan.nextInt();
             if (num > max){
                max = num;
                count = 1;
             } else if (num == max){
                 count++;
             }
          }while (num != 0);

          System.out.println("\nMax number was: " + max);
          System.out.println("Number of occurences: " + count);

答案 2 :(得分:0)

当找到新的最大值时,您需要重置计数变量。

答案 3 :(得分:0)

当您观察到新的最大值时,您需要重置计数器。此外,您应该使用do-while而不是while循环。因为do-while循环总是执行一次,所以你可以在循环中获取用户输入。

    Scanner scan = new Scanner(System.in);
    int max = Integer.MIN_VALUE, count = 0, num;
    System.out.println ("Enter a number (Enter a 0 to stop): ");
    do {
      System.out.println ("Enter a number: ");
      num = scan.nextInt();
      if (num >= max){
        count = num == max ? count+1 : 1;
        max = num;
      }
    }while(num != 0);
    System.out.println("\nMax number was: " + max);
    System.out.println("Number of occurences: " + count);