Как включить функцию печати в программу, которая рассчитывает периметры и идентифицирует фигуры? - PullRequest
0 голосов
/ 21 апреля 2020

Я изо всех сил пытаюсь продолжить работу над моей программой определения формы / калькулятора периметра. Мне нужно выяснить, как я могу включить функцию печати в свой код.

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
    int sideA;
    int sideB;
    int sideC;
    int sideD;

    System.out.println("Enter side 1: ");
    sideA = scan.nextInt();

    System.out.println("Enter side 2: ");
    sideB = scan.nextInt();

    System.out.println("Enter side 3: ");
    sideC = scan.nextInt();

    System.out.println("Enter side 4: ");
    sideD = scan.nextInt();

    int perimeter = add(sideA, sideB, sideC, sideD);

    if (sideA == sideB && sideB == sideC && sideC == sideD && sideD == sideA) {
        System.out.println("Forms a square with a perimeter of " + perimeter);
    }

    else {
        System.out.println("Does not form a square.");
    }

}

private static int add(int sideA, int sideB, int sideC, int sideD) {
    return sideA + sideB + sideC + sideD;
}

public class shapePerimeter {
    String shape;
    int perimeter;

    public void print() {
        System.out.println("Forms a " + shape + " with a perimeter of " + perimeter);
    }
}

Последний опубликованный класс c, как показано выше, это моя попытка использовать функцию печати. Как я могу исправить это, если у него есть какие-либо проблемы с модификаторами, типами возвращаемых данных, параметрами и операторами?

1 Ответ

1 голос
/ 22 апреля 2020

Не уверен, если вы хотите, чтобы все было разделено на два класса, но я бы предложил перенести ваш оператор if / else внутри вашего main в его собственный метод внутри класса shapePerimeter. Таким образом, вы можете просто расширить класс ShapePerimeter до вашего основного и вызвать метод add () и метод this new в конструкторе вашего основного класса, чтобы назначить две переменные. Отсюда я бы просто переместил код внутри вашего метода print () в основной класс и реструктурировал бы печать, чтобы он печатал назначенные переменные в вашем конструкторе.

Вот решение:

import java.util.Scanner;
public class Calculator extends ShapePerimeter {
    int perimeter;
    String shape;

    public Calculator(int sideA, int sideB, int sideC, int sideD) {
        perimeter = add(sideA, sideB, sideC, sideD);
        shape = identifier(sideA, sideB, sideC, sideD);
    }

    public static void main(String args[]) {
        Scanner scan = new Scanner(System.in);
        int sideA;
        int sideB;
        int sideC;
        int sideD;

        System.out.println("Enter side 1: ");
        sideA = scan.nextInt();

        System.out.println("Enter side 2: ");
        sideB = scan.nextInt();

        System.out.println("Enter side 3: ");
        sideC = scan.nextInt();

        System.out.println("Enter side 4: ");
        sideD = scan.nextInt();

        Calculator calc = new Calculator(sideA, sideB, sideC, sideD);

        System.out.println(calc.shape + " with a perimeter of " + calc.perimeter);
    }
}


public class ShapePerimeter {

    public String identifier(int sideA, int sideB, int sideC, int sideD) {
        if (sideA == sideB && sideB == sideC && sideC == sideD && sideD == sideA) {
            return "Forms a square";
        } else {
            return "Does not form a square";
        }        
    }

    public int add(int sideA, int sideB, int sideC, int sideD) {
        return sideA + sideB + sideC + sideD;
    }
}

Обратите внимание, что, создав конструктор, мы теперь можем просто создать объект нашего класса, пройти через наши пользовательские входные данные для параметров объекта и затем вернуть назначенные переменные объекта для нашего оператора печати. Надеюсь это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...