Отображение значений массива. Получение странных ценностей - PullRequest
0 голосов
/ 15 октября 2019

Я хотел бы сделать k случайных точек типа TockaXY. TockaXY определен:

 public static class TockaXY {

      private float x;
      private float y;

      public TockaXY(float x, float y) { 
          this.x = x;
          this.y = y;  
      }

Функция выглядит так:

 public static TockaXY[] randomCentri(int k, int lowerBound, int upperBound) {
       TockaXY[] arrayCentri = new TockaXY[k];
          for (int i = 0; i < k; i++) {
              float x = (float)(Math.random() * (upperBound - lowerBound) + lowerBound)/100;
              float y = (float)(Math.random() * (upperBound - lowerBound) + lowerBound)/100;
              TockaXY point = new TockaXY(x, y);
              arrayCentri[i]=point;
          }
          System.out.println(" Random centri: " + arrayCentri);
          return arrayCentri;

      }

Но я получаю:

Random centri: [LTest$TockaXY;@6ce253f1

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 15 октября 2019

Вам необходимо добавить метод toString в ваш TockaXY класс

@Override
    public String toString() {
        return "TockaXY{" + "x=" + x + ", y=" + y + '}';
}

и использовать Array.toString при печати

System.out.println(" Random centri: " + Arrays.toString(arrayCentri));

или использовать цикл для печати каждого элемента массива

for(TockaXY point: arrayCentri){
    System.out.println(point);
}
1 голос
/ 15 октября 2019

Прямо сейчас вы видите только указатель. Java внутренне вызовет .toString () для String + Object.

Реализуйте метод toString () в вашем классе TockaXY и выполните итерации по массиву, преобразуя каждую запись массива в String.

...