数组中的Java计数出现次数
我试图计算整数数组中出现的次数,并返回每个数字的显示次数。我的代码计算正确的发生次数,但它会多次显示它们 以下是相关代码:数组中的Java计数出现次数,java,arrays,sorting,Java,Arrays,Sorting,我试图计算整数数组中出现的次数,并返回每个数字的显示次数。我的代码计算正确的发生次数,但它会多次显示它们 以下是相关代码: int num=input.nextInt(); 整数计数=0; int[]整数=新的int[num]; for(int i=0;i
int num=input.nextInt();
整数计数=0;
int[]整数=新的int[num];
for(int i=0;i
问题是,如果一个数字出现多次,它会多次显示该数字。例如,{1,2,2,3}将打印“2发生2次”两次。我理解为什么会发生这种情况,但我想知道是否有一种简单的方法可以确保这些语句只打印一次。您的问题是打印语句。在每次迭代中调用print。相反,您可以将该计数值存储在映射中:
1 -> 1
2 -> 2
3 -> 1
其中,键
是正在计算的整数值,值
是它在数组中出现的次数。最后,您可以打印地图:
for(int key : map.keySet()) {
int value = map.get(key);
System.out.println(key + " occurs "+value+" times.");
}
您可以在这里找到更优雅的解决方案[],而无需使用Map: 如果您输入的数字将在1-50之间 那么我的方法就行了
int a[]=new int[51];
int b[]={4,7,8,5,4,50,5,5,4,44};
for(int c:b){
a[c]++;
}
for(int c:b){
if(a[c]!=-1){
System.out.println("value: "+c+" "+"count"+ a[c]);
}
a[c]=-1;
}
您可以随时将其转换为列表,并使用工具为您完成此项工作!看看这个答案,它实际上可以回答你的问题。好吧,你应该忽略你已经计算过的任何数字。然而,如果你退一步,你会意识到你想要的是一个数字到它的计数的映射。要使用关键字:您需要一个频率映射(也称为基数映射)。查一下,然后从那里开始工作:)谢谢,我会研究这个!问题是“在数组中计算发生次数”。我的建议是将其转换为列表,并查看链接,该链接与已回答的问题相同。这应该是评论,而不是答案。如果这是一个重复的问题,那么就这样做和/或留下评论,一旦你足够。如果问题不是重复的,则根据具体问题定制答案。