如何打印出这个查找重复项的数组方法? packagepractice3; 导入java.util.array; 导入java.util.Scanner; 公共类ray1{ 公共静态int[]findDuplicates(int[]userInput) { for(int i=0;i
我认为问题可能出在静态void main中,但我不太确定代码出了什么问题。您返回得到的输入,因此当然不会得到重复的输入。 您应该在函数中创建一个哈希集,并向其中添加重复项如何打印出这个查找重复项的数组方法? packagepractice3; 导入java.util.array; 导入java.util.Scanner; 公共类ray1{ 公共静态int[]findDuplicates(int[]userInput) { for(int i=0;i,java,arrays,Java,Arrays,我认为问题可能出在静态void main中,但我不太确定代码出了什么问题。您返回得到的输入,因此当然不会得到重复的输入。 您应该在函数中创建一个哈希集,并向其中添加重复项 public static void main(String[] args) { int[] listOfNumbers = { 1, 2, 3, 4, 1, 2, 3, 1 }; ArrayList<Integer> list = new ArrayList<>(f
public static void main(String[] args) {
int[] listOfNumbers = { 1, 2, 3, 4, 1, 2, 3, 1 };
ArrayList<Integer> list = new ArrayList<>(findDuplicates(listOfNumbers));
Collections.sort(list);
System.out.println(list);
}
public static HashSet<Integer> findDuplicates(int[] userInput) {
HashSet<Integer> output = new HashSet<Integer>();
for(int i = 0; i< userInput.length; i++) {
for (int j = i+1; j < userInput.length; j++) {
if(userInput[i]== userInput[j]) {
output.add(userInput[i]);
}
}
}
return output;
}
publicstaticvoidmain(字符串[]args){
int[]ListofNumber={1,2,3,4,1,2,3,1};
ArrayList=新的ArrayList(findDuplicates(ListofNumber));
集合。排序(列表);
系统输出打印项次(列表);
}
公共静态哈希集findDuplicates(int[]userInput){
HashSet输出=新的HashSet();
for(int i=0;i
请注意,我使用返回类型作为哈希集,它更合适,因为您希望每个副本显示一次,然后我将其转换为ArrayList并打印出来。根据您的代码,
int[]listOfNumbers
和int[]x
都是相同的。您已将int[]listofNumber
传递到findDuplicates()
方法中,并返回了相同的值,但没有做任何更改
如果您试图删除该方法中的重复项,那么您需要在循环中执行一些操作,在循环中检查value[i]==value[j],其中i=j
建议您在value[i]!=值[j]
,但当它们相似时不可用
完成此操作后,在两个循环的末尾将有一个具有唯一编号的集合。然后您将能够排序和打印
注意:这不是最简单或最佳的方法,因为Java有一个名为Set
的概念来收集唯一的元素。首先,如果您可以更改方法并找出如何使这两个循环满足要求,这将是一件好事。我建议首先修复findDuplicates
方法来完成它应该做的事情。我的理解是,它应该返回一个数组,其中包含在userInput
数组中多次出现的值
一种方法是在findDuplicates
方法的开头创建一个新数组,并将其命名为例如duplicatedValues
。然后,您可以用方法逻辑的其余部分标识为重复的值填充它。考虑到您在其中一条注释中声明的输出应该是[1,2,3]
,我认为您还应该修改if
语句,以仅接受duplicatedValues
数组中尚未存在的值,这甚至可能意味着第三个for
循环。否则,duplicatedvalue
数组本身也将包含重复项
使用“唯一重复项”填充duplicatedValues
数组后,可以返回该数组而不是userInput
数组。尝试用System.out.println(x.toString())替换打印;你能再解释一下你的问题吗?不清楚你想要实现什么。也许能给我们预期的结果。你想做什么?在搜索(您当前正在执行的操作)或返回重复数组并打印该数组时将其打印出来。您只是返回了原始数组。很抱歉,我试图让它显示[1,2,3],而不是所有的数字,这样它就可以显示重复的数字,而不是所有的数字。(所以它不会显示4,因为它在字符串中只显示一次)。您只需打印出原始数组,甚至没有尝试以任何方式修改它。现在还不清楚你是如何期望这样做的。