2015-08-26 10 views
1

, поэтому я пытаюсь настроить массив, который содержит координаты x y. Программа работает, но мои результаты печати - это адреса памяти. вот мой код:печатать адрес памяти вместо данных в java

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); 
    } 
} 

вход ценится.

+0

Ваш метод возвращает массив точек; это ссылка, напечатанная. Вам необходимо перебрать его и вызвать метод toString() для каждой точки массива. Зачем возвращать объект, когда вы можете вернуть массив точек? – duffymo

+0

@duffymo Я вернул ваше недавнее изменение, потому что оно изменило код таким образом, что исходная проблема также изменилась. –

+0

Извините, я переусердствовал и редактировал ваш код после внесения изменений в формат. Я думаю, что он работает с исправлениями. Попробуй. – duffymo

ответ

1

Вы печатаете массив типа Point[] в своем методе main(), вопреки тому, что он появляется. Быстрый способ обойти эту проблему - использовать 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)] 
+0

это почти работает, он говорит мне: никакой подходящий найденный метод не может преобразовать объект во что-нибудь – drako234

+0

awesome большое спасибо. – drako234

+0

Пожалуйста, отметьте ответ правильно, если он решил вашу проблему. –

0

Ваша печать объекта «Объект» напрямую. System.out.print() работает только с строками и примитивными типами данных, поэтому, если вы хотите распечатать информацию об объекте «Объект», вам придется использовать метод toString(), который вы указали для класса «Точка».

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

Неверно - он работает в любом классе, который правильно переопределяет toString(). Массивы нет. – duffymo

+0

Спасибо за конструктивную критику, даже если она была немного грубой :). –

+0

Rude? Вы слишком чувствительны. – duffymo

0

Вы пытаетесь напечатать массив объектов Point, поэтому он распечатывает адрес памяти. Вы можете использовать ArrayList вместо массива. Печать списка массивов вызовет метод toString для каждого элемента, который в вашем случае является методом toString класса Point.

 Смежные вопросы

  • Нет связанных вопросов^_^