重复数字

时间:2013-11-04 18:25:08

标签: java if-statement count conditional

我已经坚持了一段时间。我应该创建一个方法,计算出有多少数字看起来是一样的。举一个例子,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

4 个答案:

答案 0 :(得分:2)

解决此问题的一种方法是使用“地图”。地图将帮助您保留数字本身(称为地图的“关键”)和计数(称为“值”。请查看此web page以了解如何使用地图。

答案 1 :(得分:0)

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()));
    }
}

答案 2 :(得分:0)

解决此问题的最直接方法是从int到int。{/ p>的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);
}

答案 3 :(得分:0)

if(a == b || a == c || a == d) 我认为这应该在那里而不是 if(a == b || b == c || c == d)