Может ли кто-нибудь помочь мне понять, как заставить этот расчет работать? Я продолжаю работать по кругу и, честно говоря, не знаю, что делать. Это мой текущий файл, над которым я работаю:
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())); и другие подобные вещи, но я просто в тупике. Любой совет будет очень признателен!
input.equals("Q") будет истинным никогда.
Какова цель списков, если вы получаете только первый элемент (get(0))?
@Andreas Я думаю, что ваш совет бесполезен при нынешнем уровне знаний в области программирования в SpaceGrapes ..
@LonelyNeuron Мои комментарии предназначены для того, чтобы сделать OP считать по этому поводу. Как это бесполезно? Люди узнают гораздо больше из решения, которое они исправляют сами, вместо того, чтобы получать ответ с ложечки.
@Andreas Если OP не знает, как передавать параметры методу, я почти уверен, что OP не имеет представления ни о List, ни о дженериках в целом. Я не хотел вас обидеть, я просто хотел отметить, что не все советы полезны для всех пользователей, так как они могут столкнуться с трудностями при использовании гораздо большего количества базовых концепций. Выявление более сложных проблем в конечном итоге может сбить с толку
@LonelyNeuron Ни один из моих комментариев не относится к «более сложным проблемам», так как это обе проблемы, которые необходимо исправить, чтобы программа работала нормально, т.е. это проблемы, с которыми OP сталкивается прямо сейчас. Если OP достаточно "продвинутый", попробуйте использовать ArrayList, OP достаточно продвинут, чтобы понять, что повторное добавление значения в список, но только получение только первого элемента, не является правильным путем к рабочему решению. К тому же были просто Комментарии, а не ответы.
@Andreas, говоря о «более сложных задачах», я имел в виду более продвинутый, чем OP, а не более продвинутый по сравнению с большинством программистов. Также обе вещи, на которые вы указали, - ужасный код, но он действительно работает - по большей части. Также я почти уверен, что в ArrayList есть часть кода, представленного в какой-то инструкции.
@ ThorbjørnRavnAndersen, спасибо! Это действительно открыло мне глаза.
@SpaceGrape Пожалуйста. Освоить предметы непросто.




Внимательно посмотрите на подпись вашего метода:
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));
Что вернет по крайней мере несколько более интересный результат.
Спасибо за комментарий! Это действительно помогло, поэтому я ценю это. :)
Вам нужны точки два, поэтому вы можете вызвать
point1.distance(point2)