#java #loops
#java #циклы
Вопрос:
В основном методе я сначала хочу прочитать в начальной точке, используя метод readPoint (который дважды вызывает readCoordinate в координатах x и y точки).
Далее, я хочу каждый раз считывать в цикле новую точку. Я хочу продолжать цикл до тех пор, пока начальная точка не будет введена снова.
Как мне поступить?
package domain;
public class Point {
private int x;
private int y;
public Point(int x, int y) {
setX(x);
setY(y);
}
private void setX(int x) {
checkCoordinate(x);
this.x = x;
}
private void setY(int y) {
checkCoordinate(y);
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
private void checkCoordinate(int coordinate) {
if (coordinate < 0)
throw new IllegalArgumentException("The coordinate must be greater than or equal to 0");
}
public boolean compareWithPoint(Point point) {
if (this.x == point.x amp;amp; this.y == point.y)
return true;
else
return false;
}
public double calculateDistanceToPoint(Point point) {
int x1 = point.x;
int y1 = point.y;
int x2 = this.x;
int y2 = this.y;
double distance = Math.sqrt(Math.pow(x2 - x1, 2) Math.pow(y2 - y1, 2));
return distance;
}
}
package ui;
import java.util.Scanner;
import domain.Point;
public class PointApplication {
public static void main(String args[]) {
PointApplication application = new PointApplication();
Scanner input = new Scanner(System.in);
Punt startingPoint = application.readPoint("Enter first coordinate:", "Enter second coordinate: ", input);
}
private Point readPoint(String question1, String question2, Scanner sc) {
Scanner input = new Scanner(System.in);
System.out.print(question1);
int number1 = input.nextInt();
System.out.print(question2);
int number2 = input.nextInt();
Point newPoint = new Point(number1, number2);
return newPoint;
}
private int readCoordinate(String vraag, Scanner sc) {
Scanner input = new Scanner(System.in);
System.out.print(question);
int coordinate = input.nextInt();
return coordinate;
}
}
Ответ №1:
Не принимая во внимание сохранение всех введенных точек, вы могли бы сделать что-то вроде:
Point startingPoint = application.readPoint("Enter first coordinate:","Enter second coordinate: ",input);
Point nextPoint = null;
while (nextPoint == null || !startingPoint.compareWithPoint(nextPoint)) {
nextPoint = application.readPoint("Enter first coordinate:","Enter second coordinate: ",input);
// TODO: Do something with nextPoint
}
Этот цикл while будет выполняться до тех пор, пока оба значения nextPoint
больше не станут равными null
(должно быть true после первой итерации) и метод compareWithPoint
вернет true.