Java 重复数字
这件事我已经坚持了一段时间了。我应该创建一个方法,计算有多少个数字看起来是相同的。例如,7-2-2-7应该是2,4-4-5-5应该是2,而1-2-3-4应该是0。但是我的程序给了我3,当只有2个不同的数字是相同的???帮忙Java 重复数字,java,if-statement,count,conditional,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 v
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
公共类帮助{
公共静态void main(字符串[]args){
numRepeat(7,2,2,7);
}//主要
公共静态无效数字(整数a、整数b、整数c、整数d){
int rep=0;
整数和=0;
对于(int i=0;i解决此问题的一种方法是使用“映射”。映射将帮助您保留数字本身(称为映射的“键”)和计数(称为“值”)。请查看此图,了解如何使用映射。import java.util.*;
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()));
}
}
课堂测试{
公共静态void main(字符串[]args){
numRepeat(7,2,2,7);
}
公共静态void numRepeat(int…nums){
Set m=新的HashSet();
for(int-num:nums){
m、 添加(num);
}
System.out.println(“重复数字之和为”+(nums.length-m.size());
}
}
解决此问题的最直接方法是将从int映射到int
为什么是地图
- 他们不允许重复
- 它们允许您方便地检索有关集合中特定数字的信息
要遵循的示例代码。我假设您的信息来自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);
}
Map seenValues=newhashmap();
for(int val:parsedResults){
如果(参见值。容器(val)){
seenValues.put(val,seenValues.get(val)+1);
}否则{
参见值。put(val,1);
}
如果(a==b | | a==c | | a==d)
我认为这应该在那里,而不是
如果(a==b | | b==c | | c==d)为什么循环需要?为什么7-2-2-2
和4-4-5-5
都是2?每个样本集中有两个相同的数字。==
是可交换的。操作数的放置顺序是无关的;a==b
与b==a
相同。对不起,我真的很累ed.4-4-5-5将是2.numRepeat(7,2,2,7);但没有函数numRepeat.:)你应该改用java.util.Set
。@MartijnCourteaux:为什么是一个集合?除了非重复列表之外,这会给你带来什么好处?这不会告诉你之前列表中有哪些重复项。是的,你是对的。之前的评论员提到了map,所以我使用了map:)@Makoto“这不会告诉你之前列表中有哪些重复项”这不是required@Makoto:因为重复的数量可以与数字总数和唯一数字的数量相关联:#dup=#total-#unique
。