计算数组中的整数;如何消除重复的输出字符串

时间:2016-11-27 02:13:31

标签: java arrays for-loop integer counting

我正在编写一个程序,它输出在整数数组中找到每个整数的次数。我已经完成了这个,但是,我有重复的输出字符串。

这是输出:

>run:
>Please enter integers from 0 to 100: 
1
2
3
4
4
5
0
// 1 occurs 1 time //
2 occurs 1 time //
3 occurs 1 time //
4 occurs 2 times //
4 occurs 2 times //
5 occurs 1 time //
BUILD SUCCESSFUL (total time: 14 seconds)

正如你所看到的那样,“4次出现2次”打印两次,因为它在数组中被发现两次。

我只需要一些关于如何消除重复的方向。任何事情都会非常感激。

import java.util.*;
public class WorkSpace3 {
    public static void main(String[] args) {
        int i = 0;
        int count = 0;
        int key = 0;

        System.out.print("Please enter integers from 0 to 100: ");
        int[] myList = new int[100];
        Scanner s = new Scanner(System.in);
        for (i = 0; i < myList.length; i++) 
        {
            myList[i] = s.nextInt();
            if (myList[i] == 0)
                break;
        }

        while (key < myList.length && myList[key] != 0) {
            for (i = 0; i < myList.length; i++) 
            {

                {   if (myList[i] == myList[key]) 
                    {  count++; }   }
            }


            if (count == 1)
                System.out.println(myList[key] + " occurs " + count + " time ");
            if (count > 1)
                System.out.println(myList[key] + " occurs " + count + " times ");
            key++;
            count = 0;

        }
    }
}

3 个答案:

答案 0 :(得分:0)

参见set element:

https://docs.oracle.com/javase/7/docs/api/java/util/Set.html

从数组中创建set元素删除重复项。

答案 1 :(得分:0)

您可以使用的一种简单方法是使用零标记已计数的元素。这种方法并不普遍;它只是因为你用零来标记最终用户输入序列的结尾才有效。

您必须稍微修改代码才能使用此方法:而不是在while循环中查找零,设置变量以标记序列的长度。在开头将其设置为myList.length,然后在休息时重置为i。现在,您可以将列表移动到此最大计数,进行计数,然后将零设置为已计数的元素。

答案 2 :(得分:0)

使用Map

尝试此操作
Map<Integer,Integer> counts=new HashMap<Integer,Integer>();
for (i = 0; i < myList.length; i++) {
 if(counts.contains(myList[i]){
counts.put(myList[i],++counts.get(myList[i]);
 }else{
 counts.put(myList[i],1);
}