嘿,我一直在乱搞java并创建了这个程序,它将通过一个数组并找到数组中的所有副本及其工作,这很棒!但是如果我运行程序有一个小问题,并且有一个值超过2个副本,它将输出两个重复的相同值 - 这可能会更好地解释它
输出
Duplicates in Array: 1
Duplicates in Array: 8
Duplicates in Array: 8
我已经被困在这一段时间了,现在我知道这可能是一些小错误,但是如果有人能帮我解决这个问题会很棒,代码就在下面,谢谢
import java.util.Arrays;
public class Duplicates {
public static void main (String[] args) {
int[] values = { 8, 5, 9, 8, 6, 13, 33, 1, 98, 12, 8, 1 };
Arrays.sort(values);
for(int i = 1; i < values.length; i++) {
if(values[i] == values[i - 1]) {
System.out.println("Duplicates in Array: " + values[i]);
}
}
}
}
答案 0 :(得分:2)
如果我理解了您的问题,那么您可以添加一个while
循环,以便在报告重复项之后继续进行重复。像,
public static void main(String[] args) {
int[] values = { 8, 5, 9, 8, 6, 13, 33, 1, 98, 12, 8, 1 };
Arrays.sort(values);
for (int i = 1; i < values.length; i++) {
if (values[i] == values[i - 1]) {
System.out.println("Duplicates in Array: " + values[i]);
while (values[i] == values[i - 1]) { // <-- add this
i++;
}
}
}
}
输出
Duplicates in Array: 1
Duplicates in Array: 8
答案 1 :(得分:0)
我不确定你是否被允许在你的例子中使用arraylists但是如果你那么你可以轻松存储你已经拥有的值,并且在每个for循环中你可以检查是否有任何重复。
for (int i = 0; i < values.length; i++) {
for (int j = i + 1; j < values.length; j++) {
if (values[i] == values[j] && !foundValues.contains(values[j])) {
System.out.println("Duplicates in Array: " + values[i]);
foundValues.add(values[i]);
}
}
}
输出
Duplicates in Array: 1
Duplicates in Array: 8