2015-10-04 30 views
2

在我的实验室中,我们必须输入用户输入的数字,直到输入“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 数OCCURENCES的:4

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

输出读取: 最大数为:9 编号OCCURENCES的:3

只是寻求一些建议。帮助将不胜感激:d

回答

2

如果num > max,那么它的最大的首次出现,并count应设置为1,如果num == max,那么它的最大的另一个发生,count应该增加。

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

+1

此外,第一个输入被忽略。 – doelleri

+0

我以为实际上发布后,我试图修复它。意识到它应该是一个'do-while'循环而不是'while'。谢谢! :D – Tyler

+0

它不一定是一个while while循环。只是不要在循环之前读取任何int。将num初始化为除0之外的任何值。 –

0

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

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); 
+1

感谢您的建议!我得到它的工作。我是一个结界,所以我仍然在研究正确的循环使用。 – Tyler

1

在这里使用的最佳循环是do...while

这里是一个校正代码:

你必须重置只有当新max被发现count变量。

  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); 
相关问题