0

我是Java编程的新手。在以下情况下,我无法理解为什么我不能通过这一行打印数组:

System.out.print(arr());

我得到的不是所有结果:'[D@60e1e567'

我做错了什么?

public class test {

    public static void main(String[] args) {
        System.out.print(arr());
    }

    public static double[] arr() {
        double res;

        int count=0;
        double[] anArray = new double[100000000];


        int k=0;
        for (int j=2;j<101;j++){
            for(int i=2; i<101;i++) {
                res=Math.pow(j,i);
                anArray[k]=res;
                k++;
            }
        }

        return anArray;         
    }
}
4

6 回答 6

1

你不能直接打印数组。你需要这样的东西:

double[] array=arr();

for(double x: array)
   System.out.print(x+" ");
于 2013-02-15T13:06:27.410 回答
1

你不能像这样打印数组

System.out.print(arr());

用这个:

System.out.print(Arrays.toString(arr()));

为此,您还应该添加

import java.util.Arrays;

在文件的开头

你的数组也很大。100000000双打可能不适合数组。您可能想要更改数据结构,或限制大小。否则你可能会得到一个java.lang.OutOfMemoryError: Java heap space

于 2013-02-15T13:04:54.007 回答
1

你可以遍历数组来查看它的值,或者调用 Collections 方便的方法来大致做同样的事情:Arrays.toString(arr())

public static void main(String[] args) {
    double[] d = arr();
    for(double x : d) {
        System.out.println(x);
    }
}
于 2013-02-15T13:06:09.207 回答
1
System.out.println(Arrays.toString(arr()));

返回指定数组内容的字符串表示形式。字符串表示由数组元素的列表组成,括在方括号 ("[]") 中。相邻元素由字符“,”(逗号后跟一个空格)分隔。通过 String.valueOf(double) 将元素转换为字符串。如果数组为空,则返回“空”。

于 2013-02-15T13:05:25.240 回答
0

而不是打印整个数组,您应该在那里打印每个元素:

double[] resultAry =arr();
for(int i=0; i< resultAry.length; i++ ){
System.out.println(resultAry[i]);
}
于 2013-02-15T13:20:40.260 回答
0

你没有做错什么。默认情况下,数组没有实现好的 toString() 。打印人类可读输出的最佳方法是使用Arrays.asList(arr()).

于 2013-02-15T13:05:41.047 回答