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
Arrays 在java中打印内存地址而不是数据_Arrays_Memory Address_Points - Fatal编程技术网

Arrays 在java中打印内存地址而不是数据

Arrays 在java中打印内存地址而不是数据,arrays,memory-address,points,Arrays,Memory Address,Points,所以我试着设置一个数组来保存xy坐标。 该程序似乎可以运行,但我的打印结果是内存地址。 这是我的密码: static class Point{ int x; int y; @Override public String toString() { return x + " " + y; } } public static Object thePoints( int x, int y){ Point[] mypoints = new

所以我试着设置一个数组来保存xy坐标。 该程序似乎可以运行,但我的打印结果是内存地址。 这是我的密码:

static class Point{
    int x;
    int y;
    @Override
    public String toString() {
        return  x + " " + y;
    }
}

public static Object thePoints( int x, int y){
    Point[] mypoints = new Point[10];
    for (int i = 0; i < mypoints.length; i++){
       mypoints[i] = new Point();
    }   
    mypoints[0].x = 200;
    mypoints[0].y = 200;
    return mypoints;
}

public static void main(String args[]) {
    Object thing = thePoints(0,0);

    System.out.print(thing);
    }
}
静态类点{
int x;
int-y;
@凌驾
公共字符串toString(){
返回x+“”+y;
}
}
公共静态对象点(整数x,整数y){
点[]mypoints=新点[10];
对于(int i=0;i

欢迎您的意见

您正在打印
main()
方法中类型为
Point[]
的数组,与它显示的相反。解决此问题的一个快速方法是使用
Arrays.toString()
。尝试将
main()
方法中的代码更改为:

public static void main(String args[]){
    Object thing = thePoints(0,0);

    System.out.print(Arrays.toString((Point[])thing));
}
如果还将
Point.toString()
重构为以下内容,则会得到一些相当漂亮的输出:

static class Point{
    int x, y;

    @Override
    public String toString() {
        return  "(" + x + ", " + y + ")";    // print out a formatted ordered pair
    }
}
输出:

[(200, 200), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0)]

直接打印“对象对象”。System.out.print()仅适用于字符串和基本数据类型,因此如果要打印有关“Object thing”的信息,必须使用为类“Point”声明的toString()方法

System.out.println(thing[0].toString());

您正在尝试打印点对象数组,这就是它打印内存地址的原因。可以使用ArrayList而不是数组。打印数组列表将调用每个元素的toString方法,在您的情况下,该方法是Point类的toString方法。

您的方法返回一个点数组;这是印刷的参考资料。您需要对它进行迭代,并为数组中的每个点调用toString()方法。既然可以返回点数组,为什么还要返回对象?@duffymo我还原了您最近的编辑,因为它更改了代码,导致原来的问题也发生了变化。对不起,我太热心了,在更改了格式后编辑了您的代码。我认为它与修复一起工作。“试试看!”蒂姆·比格莱森——是的,我在重新格式化后被迷住了。我忘了我在哪里了。错了-它适用于任何正确重写toString()的类。不用了。谢谢你的建设性批评,即使有点粗鲁:)。粗鲁?你太敏感了。我想我内心的声音读东西的方式不一样。我读它的方式就像“wrooong-u-,这就是它的实际工作方式”。这几乎起作用它告诉我:没有找到合适的方法不能将对象转换成任何东西