Не уверен, если вы хотите, чтобы все было разделено на два класса, но я бы предложил перенести ваш оператор 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;
}
}
Обратите внимание, что, создав конструктор, мы теперь можем просто создать объект нашего класса, пройти через наши пользовательские входные данные для параметров объекта и затем вернуть назначенные переменные объекта для нашего оператора печати. Надеюсь это поможет!