2013-12-10 366 views
0

你好。我遇到了一个项目的麻烦,并希望我的问题能够得到解答,因为我作为一个新手来到该网站。这是我的代码,这个项目的基本点是让用户输入整数,有一个程序读取整数并找到它的出现次数。我能够让if语句找到所有数字中的最大数字,但我无法获得代码来计算最大数字重复的次数。如果我输入任何数字,它立即加1计数,那么我应该添加一个更高的数字,它继续增加,所以我应该把1 1 2 5,它会说:
“最大值是5和计数是4倍。”用户在java中输入重复int的次数

import java.util.Scanner; 
public class project9 
{ 
    public static void main(String[] args) 
    { 
    int max = 0; 
    int count = 0; 
    int list = 1; 
    Scanner input = new Scanner(System.in); 

    System.out.println("Enter numbers for listing: "); 
    while(list != 0) 
    { 
     list = input.nextInt(); 

     if(list > max) 
     { 
      max = list; 
     } 
     if(list == max) 
     { 
      count++; 
     } 
     } 

     System.out.println("The numbers listed are: " + list); 
     System.out.println("The number was " + max + " and it was repeated " + count + " times."); 
    } 
} 
+0

你需要一些方法来匹配用户输入某种计数器的'int'值,这样每次用户重新输入相同的'int'值,您可以查找关联的计数器并将其增加,或者如果以前从未输入该值,则创建一个新的关系。在我看来,你需要某种'Map',它可以让你将一个int值与另一个int值联系起来。查看[Collections](http://docs.oracle.com/javase/tutorial/collections/)了解更多详细信息和[The Map Interface](http://docs.oracle.com/javase/tutorial/) collections/interfaces/map.html) – MadProgrammer

回答

1

试试这个:

while(list != 0) 
{ 
    list = input.nextInt(); 

    if(list > max) 
    { 
     max = list; 
     count = 1;   // reset count when new max is found. 
    } 
    if(list == max) 
    { 
     count++; 
    } 
    } 
+0

应该将'count'重置为0,而不是1,因为下一个'if'会立即碰撞'count'。另外做第二个'如果'一个'else if'。 –

+0

是的,谢谢!新计数的重置完美无缺!只是将计数设置为1,而不是将计数设置为0,因为它会使用第二个if语句自动添加1。 – Robert