从函数打印数组-java

从函数打印数组-java,java,Java,我试图打印一些素数的数组,这些素数除以一个数字,这段代码的输出: [J@15db9742 如何打印通过函数获得的数组 public static long[] primes(int n) { int count = 0; long arr1[] = new long[n]; for (int i = 2; i < n; i++) { boolean prime = true; if (n % i == 0) f

我试图打印一些素数的数组,这些素数除以一个数字,这段代码的输出:

[J@15db9742

如何打印通过函数获得的数组

public static long[] primes(int n) {
    int count = 0;
    long arr1[] = new long[n];
    for (int i = 2; i < n; i++) {
        boolean prime = true;
        if (n % i == 0)
            for (int j = 2; j < i && prime; j++) {
                if (i % j == 0) prime = false;
            }
        if (prime && n % i == 0) {
            arr1[count] = i;
            System.out.println(arr1[count]);
            count++;
        }
    }

    long arr[] = new long[count];
    for (int i = 0; i < arr.length; i++) {
        arr[i] = arr1[i];
    }
    return arr;
}
数组是引用类型

您必须使用实用程序类来打印阵列:

对于多维数组:

顺便说一句 小建议您可以使用一些优化来代替循环:

更好地使用:

System.arraycopyarr1,0,arr,0,arr.length

数组是引用类型

您必须使用实用程序类来打印阵列:

对于多维数组:

顺便说一句 小建议您可以使用一些优化来代替循环:

更好地使用:

System.arraycopyarr1,0,arr,0,arr.length


System.out.printlnArrays.tostringar;@pbabcdefp answer是最好的。System.out.printlnArrays.tostringar;@pbabcdefp answer是最好的。或者,只返回arr1.clone。@LouisWasserman它可以工作,但多维数组克隆失败。如果这个问题涉及多维数组,我不会建议它。但这个问题似乎不可行需要对多维数组进行泛化。另外,System.arraycopy对多维数组也没有更好的效果。@LouisWasserman arr1和arr的长度不同,所以克隆无法工作。@pbabcdefp:啊,我明白了,很好。然后您需要arrays.copyOfarr1,count。或者,只需返回arr1.clone即可。@LouisWasserman它可以工作,但对multidime来说是这样的多维数组克隆失败。如果这个问题涉及多维数组,我不会建议它。但这个问题似乎不需要推广到多维数组。另外,System.arraycopy对多维数组也没有更好的效果。@LouisWasserman arr1和arr的长度不同,所以克隆不起作用。@pbabcdefp:啊,我明白了,接得好。然后你要数组。copyOfarr1,计数。
    for (int i = 0; i < arr.length; i++) {
        arr[i] = arr1[i];
    }
for(long n: arr)
 System.out.println(n);