簡體   English   中英

重復數字

[英]Repeating numbers

我已經堅持了一段時間。 我應該創建一個方法,計算出有多少數字看起來是一樣的。 舉一個例子,7-2-2-7應該是2,而4-4-5-5應該給2,而1-2-3-4給0.但我的程序給了我3只有2個不同的數字是相同的??? 救命?

public class Help {
       public static void main(String[] args) {
          numRepeat(7, 2, 2, 7);
       }//main
       public static void numbers(int a, int b, int c, int d) {
          int rep = 0;
          int sum = 0;
             for (int i = 0; i <= 1; i++) {
                if (a == b || b == c || c == d) {
                   rep++;
                   sum += rep;
                } else if (b == a || b == c || b == d) {
                   rep++;
                   sum += rep;
                } else if (c == a || c == b || c == d) {
                   rep++;
                   sum += rep;
                } else { /**do nothing**/ }
             }//for loop
          System.out.println("The sum of repeated digits is " + sum);
       }//numRepeat
    }//class

解決此問題的一種方法是使用“地圖”。 地圖將幫助您保留數字本身(稱為地圖的“鍵”)和計數(稱為“值”。請查看此網頁以了解如何使用地圖。

import java.util.*;

class Test {

    public static void main(String[] args) {
        numRepeat(7, 2, 2, 7);
    }

    public static void numRepeat(int... nums) {

        Set<Integer> m = new HashSet<Integer>();
        for (int num : nums) {
            m.add(num);
        }
        System.out.println("The sum of repeated digits is " + (nums.length - m.size()));
    }
}

解決此問題的最直接方法是從int到int的Map

為何選擇地圖?

  • 他們不允許重復。
  • 它們允許您方便地檢索有關集合中特定號碼的信息。

要遵循的示例代碼。 我假設你的信息來自numRepeat ,它接受一個int varargs參數。

Map<Integer, Integer> seenValues = new HashMap<>();

for(int val : parsedResults) {
    if(seenValues.containsKey(val)) {
        seenValues.put(val, seenValues.get(val) + 1);
    } else {
        seenValues.put(val, 1);
}

if(a == b || a == c || a == d)我認為這應該在那里而不是if(a == b || b == c || c == d)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM