Java 如何通过返回数组来打印数组中的唯一元素?

Java 如何通过返回数组来打印数组中的唯一元素?,java,arrays,Java,Arrays,我有以下代码片段,希望打印数组a[] 我想通过返回数组在main方法中打印结果。 以下代码返回结果-102021340566507676755099230012 谁能告诉我我在哪里犯的错误吗 public class uniqueElements { static int[] newArr=null; public static void main(String[] args){ int[] a=new int[] {10,20,21,34,21,56,65,65,76,67,45,55,10

我有以下代码片段,希望打印数组a[]
我想通过返回数组在main方法中打印结果。 以下代码返回结果-102021340566507676755099230012
谁能告诉我我在哪里犯的错误吗

public class uniqueElements {
static int[] newArr=null;
public static void main(String[] args){
 int[] a=new int[] {10,20,21,34,21,56,65,65,76,67,45,55,10,99,23,67,99,34,12};
 int[] b=uniqueElements(a);
 for(int i:b){
     System.out.print(i+" ");
 }

 }

private static int[] uniqueElements(int[] arr) {
newArr=new int[arr.length];
for(int i=0;i<arr.length;i++){
    boolean isDistinct = false;
    for(int j=0;j<i;j++){
        if(arr[i] == arr[j]){
            isDistinct = true;
            break;
        }
    }
    if(!isDistinct){

        newArr[i]=arr[i];

    }
}
return newArr;
}
}
公共类统一元素{
静态int[]newArr=null;
公共静态void main(字符串[]args){
int[]a=新的int[]{10,20,21,34,21,56,65,65,76,67,45,55,10,99,23,67,99,34,12};
int[]b=单一元素(a);
对于(int i:b){
系统输出打印(i+“”);
}
}
私有静态int[]uniqueElements(int[]arr){
newArr=新整数[arr.length];

对于(int i=0;i您将不同的值从输入数组复制到输出数组中的同一索引,这意味着重复值的索引将保持为0,这就是您在输出中看到的

一种可能的解决办法:

private static int[] uniqueElements(int[] arr) 
{
    newArr=new int[arr.length];
    int count = 0;
    for(int i=0;i<arr.length;i++){
        boolean isDistinct = false;
        for(int j=0;j<i;j++){
            if(arr[i] == arr[j]){
                isDistinct = true;
                break;
            }
        }
        if(!isDistinct) {
            newArr[count]=arr[i];
            count++;
        }
    }
    return newArr;
}
private静态int[]uniqueElements(int[]arr)
{
newArr=新整数[arr.length];
整数计数=0;

对于(int i=0;i您将不同的值从输入数组复制到输出数组中的同一索引,这意味着重复值的索引将保持为0,这就是您在输出中看到的

一种可能的解决办法:

private static int[] uniqueElements(int[] arr) 
{
    newArr=new int[arr.length];
    int count = 0;
    for(int i=0;i<arr.length;i++){
        boolean isDistinct = false;
        for(int j=0;j<i;j++){
            if(arr[i] == arr[j]){
                isDistinct = true;
                break;
            }
        }
        if(!isDistinct) {
            newArr[count]=arr[i];
            count++;
        }
    }
    return newArr;
}
private静态int[]uniqueElements(int[]arr)
{
newArr=新整数[arr.length];
整数计数=0;

对于(int i=0;i,如果只需要唯一值,也可以使用集合:

Set b=newhashset(Arrays.asList(a));

但是,如果您仍然希望手动执行,您可以按照其他人所说的操作。

如果您只需要唯一的值,也可以使用集合:

Set b=newhashset(Arrays.asList(a));

但是,如果您仍然想手动执行,您可以按照其他人所说的操作。

删除重复元素的最简单方法是将内容添加到集合(不允许重复),然后将集合添加回ArrayList

public class uniqueElements {
static int[] newArr=null;
public static void main(String[] args){
 int[] a=new int[] {10,20,21,34,21,56,65,65,76,67,45,55,10,99,23,67,99,34,12};
 int[] b=uniqueElements(a);
 for(int i:b){
     System.out.print(i+" ");
 }

 }

private static int[] uniqueElements(int[] a) {

// add elements to a, including duplicates
HashSet hs = new HashSet();
hs.addAll(a);
a.clear();
a.addAll(hs);
return a;
}
}

删除重复元素的最简单方法是将内容添加到集合(不允许重复),然后将集合添加回ArrayList

public class uniqueElements {
static int[] newArr=null;
public static void main(String[] args){
 int[] a=new int[] {10,20,21,34,21,56,65,65,76,67,45,55,10,99,23,67,99,34,12};
 int[] b=uniqueElements(a);
 for(int i:b){
     System.out.print(i+" ");
 }

 }

private static int[] uniqueElements(int[] a) {

// add elements to a, including duplicates
HashSet hs = new HashSet();
hs.addAll(a);
a.clear();
a.addAll(hs);
return a;
}
}

您希望发生什么?这一结果似乎正是您的代码所要做的(不要担心代码样式的其他各种问题)正如我所说的,我想打印数组的唯一元素。我想知道我在这段代码中犯了什么错误。我正在将唯一元素存储在数组newArr中并返回它。你希望发生什么?结果似乎正是你的代码所要做的。(不要管你的代码风格还有其他各种问题。)正如我所说的,我想打印数组的唯一元素。我想知道我在这段代码中犯了什么错误。我正在数组newArr中存储唯一元素并返回它。