определять новую точку (с координатами) каждый раз в цикле, останавливаться в начальной точке

#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.