Java-在不重复的情况下打印数字的出现

提示用户输入后,我试图显示以下内容:

enter image description here

而这是我当前的输入:

enter image description here

如您所见,如果我输入一个数字两次,该数字将被列出两次。

有什么建议吗?这是我的代码:

public static void main(String[] args){
    Scanner input = new Scanner(System.in);

    ArrayList<Integer> Digits = new ArrayList<>();
    System.out.print("Enter digits: ");
    int value;

    do {
        value = input.nextInt();
        if (value > 1 && value < 101) 
            Digits.add(value);
        } while (value != 0);

    java.util.Collections.sort(Digits);
    Set<Integer> uniqueInputs = new HashSet<Integer>(Digits);
    for (int i = 0; i < Digits.size(); i++) {
        System.out.println(Digits.get(i) + " - " + Collections.frequency(Digits, Digits.get(i)) + " times");
    }
评论
  • 大三元
    大三元 回复

    我将设置一组唯一的数字,以免多次重复计算。然后计算每个频率,并将结果放入地图。然后打印结果。

    Set<Integer> uniqueDigits = new HashSet<Integer>(digits);
    Map<Integer, Integer> frequencies = new HashMap<Integer, Integer>();
    for (Integer uniqueDigit : uniqueDigits) {
        frequencies.put(uniqueDigit, Collections.frequency(digits, uniqueDigit));
    }
    
    // Printing
    for (Integer key : frequencies.keySet()) {
        System.out.println(key + " - " + frequencies.get(key) + " times");
    }