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