Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何打印出这个查找重复项的数组方法? packagepractice3; 导入java.util.array; 导入java.util.Scanner; 公共类ray1{ 公共静态int[]findDuplicates(int[]userInput) { for(int i=0;i_Java_Arrays - Fatal编程技术网

如何打印出这个查找重复项的数组方法? packagepractice3; 导入java.util.array; 导入java.util.Scanner; 公共类ray1{ 公共静态int[]findDuplicates(int[]userInput) { for(int i=0;i

如何打印出这个查找重复项的数组方法? 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

我认为问题可能出在静态void main中,但我不太确定代码出了什么问题。

您返回得到的输入,因此当然不会得到重复的输入。 您应该在函数中创建一个哈希集,并向其中添加重复项

  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,因为它在字符串中只显示一次)。您只需打印出原始数组,甚至没有尝试以任何方式修改它。现在还不清楚你是如何期望这样做的。