【问题标题】:Error output when ([D@7852e922) trying to print a double array [duplicate]([D@7852e922)尝试打印双精度数组时输出错误[重复]
【发布时间】:2018-11-28 17:00:01
【问题描述】:

尝试在方法中返回数组时,我一直遇到类似 [D@7852e922 的错误。请看我的代码。 (作业:通过将所有当前条目替换为 a 的值并用 b 的值更新它来更新 Array。)(仅更改方法,而不更改标头)

 public static void main(String[] args){
 double[] num = new double[]{1,2,4,9,-2,1.2};
 System.out.println(UpdateEntry(num,2,3));}
 public static double[] UpdateEntry (double[] array, int a, int b)
 {
 double[] newArray = new double[array.length];
 for (int j = 0; j < newArray.length; j++){
 if (array[j] == a){newArray[j] = b;}
 else {newArray[j] = array[j];}
 }
 return newArray;
 }

输出:

[D@7852e922

【问题讨论】:

  • arrays.toString??
  • 这不是错误,这只是数组上toString() 的输出,请参阅重复项。在您的代码中,toString() 由行 System.out.println(UpdateEntry(num,2,3)) 在数组上隐式调用。

标签: java arrays string


【解决方案1】:

替换掉这个

System.out.println(UpdateEntry(num,2,3));

System.out.println(Arrays.toString(UpdateEntry(num,2,3));

这里是文档

https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#toString(double[])


这是一种手动doit的方式(取自官方jdk6)

public static String toString(double[] a) {

    if (a == null)

        return "null";

    int iMax = a.length - 1;

    if (iMax == -1)

        return "[]";


    StringBuilder b = new StringBuilder();

    b.append('[');

    for (int i = 0; ; i++) {

        b.append(a[i]);

        if (i == iMax)

            return b.append(']').toString();

        b.append(", ");

    }

}

【讨论】:

  • 我无法更改跑步者(public static void main 中的命令)。我只能改变我的方法......那我怎么能改变它呢?
  • 那你需要返回一个字符串对象
  • 我该如何更改?
  • 请查看更新...@JessicaNguyen 并告诉我是否有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 2019-05-22
相关资源
最近更新 更多