Расчет координатного расстояния ArrayList x, y

Может ли кто-нибудь помочь мне понять, как заставить этот расчет работать? Я продолжаю работать по кругу и, честно говоря, не знаю, что делать. Это мой текущий файл, над которым я работаю:

import java.util.*;
import java.io.*;

public class Assignment_12 {

   public static void main (String[] args) {
      Scanner input = new Scanner(System.in);    

      System.out.println("name goes here");
      System.out.println("You may quit at any time by typing \"Q\".");
      ArrayList<Double> numbers = new ArrayList<Double>();
      ArrayList<Double> numbers2 = new ArrayList<Double>();
      System.out.println("Please enter an X coordinate: ");
      //Point pnt = new Point();

      while (input.hasNextDouble()) {
         numbers.add(input.nextDouble());
         System.out.println("Please enter a Y coordinate: ");
         numbers2.add(input.nextDouble());

         double x = (double) numbers.get(0);
         double y = (double) numbers2.get(0);

         Point pnt = new Point(x, y);
         System.out.println(pnt.getX()); // just to make sure the "object created"?
         System.out.println(pnt.getY()); // same as before, I think
         System.out.println(pnt.distance(pnt.getX(), pnt.getY())); // how to calculate??
      }

      if (input.equals("Q")){
         System.exit(0);
      }
   }
}

И это класс, в котором я просто пытаюсь понять, как заставить работать фактические вычисления:

public class Point {

   private double x;
   private double y;

   public Point(){
      this.x = 0.0;
      this.y = 0.0;
   }

   public Point(double x,double y){
      this.x = x;
      this.y = y;
   }

   public double distance(Point pt){
      return Math.sqrt((x - pt.x)*(x - pt.x) + (y - pt.y)*(y - pt.y));
   }

   public double getX(){
      return x;
   }

   public double getY(){
      return y;
   }
}

Я действительно борюсь с тем, что именно делать. Кажется, я создал объект pnt с помощью x и y, но я не всегда понимаю, как сделать рассчитанное расстояние доступным для печати. Я пробовал System.out.println(pnt.distance(pnt.getX(), pnt.getY())); и другие подобные вещи, но я просто в тупике. Любой совет будет очень признателен!

Вам нужны точки два, поэтому вы можете вызвать point1.distance(point2)

Thorbjørn Ravn Andersen 16.04.2018 00:34
К вашему сведению:input.equals("Q") будет истинным никогда.
Andreas 16.04.2018 00:35

Какова цель списков, если вы получаете только первый элемент (get(0))?

Andreas 16.04.2018 00:36

@Andreas Я думаю, что ваш совет бесполезен при нынешнем уровне знаний в области программирования в SpaceGrapes ..

Neuron 16.04.2018 00:44

@LonelyNeuron Мои комментарии предназначены для того, чтобы сделать OP считать по этому поводу. Как это бесполезно? Люди узнают гораздо больше из решения, которое они исправляют сами, вместо того, чтобы получать ответ с ложечки.

Andreas 16.04.2018 00:48

@Andreas Если OP не знает, как передавать параметры методу, я почти уверен, что OP не имеет представления ни о List, ни о дженериках в целом. Я не хотел вас обидеть, я просто хотел отметить, что не все советы полезны для всех пользователей, так как они могут столкнуться с трудностями при использовании гораздо большего количества базовых концепций. Выявление более сложных проблем в конечном итоге может сбить с толку

Neuron 16.04.2018 00:51

@LonelyNeuron Ни один из моих комментариев не относится к «более сложным проблемам», так как это обе проблемы, которые необходимо исправить, чтобы программа работала нормально, т.е. это проблемы, с которыми OP сталкивается прямо сейчас. Если OP достаточно "продвинутый", попробуйте использовать ArrayList, OP достаточно продвинут, чтобы понять, что повторное добавление значения в список, но только получение только первого элемента, не является правильным путем к рабочему решению. К тому же были просто Комментарии, а не ответы.

Andreas 16.04.2018 00:55

@Andreas, говоря о «более сложных задачах», я имел в виду более продвинутый, чем OP, а не более продвинутый по сравнению с большинством программистов. Также обе вещи, на которые вы указали, - ужасный код, но он действительно работает - по большей части. Также я почти уверен, что в ArrayList есть часть кода, представленного в какой-то инструкции.

Neuron 16.04.2018 01:01

@ ThorbjørnRavnAndersen, спасибо! Это действительно открыло мне глаза.

SpaceGrape 16.04.2018 01:21

@SpaceGrape Пожалуйста. Освоить предметы непросто.

Thorbjørn Ravn Andersen 16.04.2018 02:02
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
10
497
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Внимательно посмотрите на подпись вашего метода:

double distance(Point pt)
//              ⬑ single parameter of type Point

Этот метод вызывается на Point, что вы правильно сделали с point.distance(.... Но он принимает параметр один, который также имеет тип Point. Однако вы не прошли Point. Позвольте мне немного перефразировать ваш код:

double someX = pnt.getX();
double someY = pnt.getY();
pnt.distance(someX, someY)

Это не может работать, поскольку вы передаете два double вместо один Point. Итак, что вы делаете может:

pnt.distance(pnt)
//           ⬑ single parameter of type Point

Сравните это с тем, что вы сделали:

pnt.distance(pnt.getX(), pnt.getY())
//           ⬑          ⬑ two parameters of type double

Но позвольте мне указать, что это вернет 0, поскольку вы только что вычислили расстояние Points до самого себя. Пытаться:

Point otherPnt = new Point(13, 8.5);
System.out.println(pnt.distance(otherPnt));

Что вернет по крайней мере несколько более интересный результат.

Спасибо за комментарий! Это действительно помогло, поэтому я ценю это. :)

SpaceGrape 16.04.2018 01:30

Другие вопросы по теме