Как я могу напечатать несколько экземпляров класса в одном утверждении?Джава - PullRequest
0 голосов
/ 23 сентября 2018
public Class Point{
    private double x;
    private double y;

    public Point() {
    super();
    }

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


    public static Point deepCopy(Point p2) {
        Point point2 = new Point(p2.x+2, p2.y+2);
        return point2;
    }

    public static Point shallowCopy(Point p4){
        return p4;
    }

    public void setPoint3X(double x3) {
        this.x = x+1;
    }
    public void setPoint3Y(double y3) {
        this.y = y+1;
    }

    public void setPoint2(double x2, double y2) {
        this.x = x2+2;
        this.y = y2+2;
    }


    public double getX() {
        return x;
    }

    public void setX(double x) {
        this.x = x;
    }

    public double getY() {
        return y;
    }

    public void setY(double y) {
        this.y = y;
    }

    @Override
    public String toString() {
        return "Point [x=" + x + ", y=" + y + "]";
    }

public class PointDemo {
    public static void main(String[] args) {

        double x = 0;
        double y = 0;

        Point point1 = new Point(5, 10);
        Point point2 = Point.deepCopy(point1);

        Point point3 = Point.deepCopy(point2);
        point3.setPoint3X(x);
        point3.setPoint3Y(y);

        Point point4 = new Point();
        point4 = Point.shallowCopy(point3);

Вопрос 4 - Напишите класс с именем Point.Класс имеет два поля экземпляра: x и y, оба имеют тип double.Напишите два конструктора: один использует значения x и y для точки, а другой использует значения первой точки для создания второго объекта Point с точно такими же значениями x и y.Напишите демонстрационный класс для построения следующих четырех объектов Point.

Точка 1: (x = 5, y = 10)

Точка 2: (x = 7, x = 12).Эта точка должна быть построена с использованием конструктора глубокого копирования, который копирует точку 1, а затем с использованием только одного метода установки.

Точка 3: (х = 10, у = 15).Эта точка должна быть построена с использованием метода глубокого копирования, который использует точку 2 в качестве оригинала, а затем с помощью двух методов установки для изменения требуемых значений x и y.

Точка 4: Эта точка должна быть построена с использованием метода мелкой копии, и она должна использовать Точку 3 в качестве шаблона мелкой копии.

Наконец, выведите все четыре точки, используя one Statement .

Хорошо.Так что мой код дает мне все значения из point1-point4, однако я не могу найти способ вывести их все в одном выражении.Очевидно, что цикл в демонстрационном классе может печатать каждый объект Point, но это будет несколько операторов print, что нарушает требование одного оператора print.

Кроме того, я не могу использовать массив в классе Point, потому что он нарушает требование 2 полей.

Может кто-нибудь помочь или дать мне совет относительно того, как я могу взять все объекты Point и напечатать его в одном утверждении?Или это вообще возможно, а может я неправильно читаю вопрос?

Ответы [ 3 ]

0 голосов
/ 23 сентября 2018

Вы можете использовать PrintStream.format (формат (формат строки, объект ... аргументы) :

System.out.format("(%f, %f), (%f, %f), (%f, %f), (%f, %f)\n", point1.x, point1.y, point2.x, point2.y, ...and so on);
0 голосов
/ 23 сентября 2018

Я также опубликую это как ответ, так как думаю, что это может быть тем, чего на самом деле хочет ваш инструктор.

Ключевым моментом здесь является помнить, что метод toString() в вашем классе может бытьиспользуется как обычная строка и объединяет другие строки, и это то, что вы обычно делаете с + при вызове println().Так что просто используйте обычный метод println(), как вы, вероятно, уже делали.

System.out.println( "Point 1 - " + point1.toString() + ";\n" 
    + "Point 2 - " + point2.toString() + ";\n" 
    + "Point 3 - " + point3.toString() + ";\n" 
    + "Point 4 - " + point4.toString() + ";" );
0 голосов
/ 23 сентября 2018

Вы можете использовать потоки:

Arrays.stream(new Point[] {point1, point2, point3, point4}).forEach(System.out::println);

или String.format()

System.out::println(String.format("%s %s %s %s", point1, point2, point3, point4));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...