Я пишу программу, которая принимает два треугольника как экземпляры & определяет, являются ли они незаконными или нет, и выдает исключение, если они есть. Моя первая проблема в том, что я пытаюсь выбросить TriangleException
, а не Exception
. Я уверен, что мне просто нужно что-то изменить или добавить что-нибудь, чтобы он не дал мне ошибку в Eclipse.TriangleException & NonStatic toString()
Моя вторая проблема заключается в том, что я пытаюсь использовать метод toString()
для вывода боковых размеров незаконного треугольника при вызове Exception
. Он продолжает говорить мне, что я не могу сделать нестатические ссылки с вызовом toString()
. Я посмотрел онлайн и попробовал несколько различных возможных решений, но никто из них, похоже, не работает.
Я включил мои два класса ниже:
public class TriangleException extends Object {
private double side1;
private double side2;
private double side3;
public static void main(String[] args) throws Exception {
try {
TriangleWithException t1 = new TriangleWithException(1.5, 2, 3);
System.out.println("Perimeter for t1: " + t1.getPerimeter());
System.out.println("Area for t1: " + t1.getArea());
TriangleWithException t2 = new TriangleWithException(1,2,3);
System.out.println("Perimeter for t2: " + t2.getPerimeter());
System.out.println("Area for t2: " + t2.getArea());
}
catch (TriangleException e){
System.out.println("\nIllegal Triangle!!!");
System.out.println(toString()); // trying to print the three sides of the illegal triangle here
}
}
public double getSide1() {
return side1;
}
public double getSide2() {
return side2;
}
public double getSide3() {
return side3;
}
}
public class TriangleWithException extends Object {
double side1, side2, side3;
public TriangleWithException(double d, double i, double j) throws Exception {
side1 = d;
side2 = i;
side3 = j;
if (side1 >= side2 + side3)
throw new TriangleException();
else if (side2 >= side1 + side3)
throw new TriangleException();
else if (side3 >= side2 + side1)
throw new TriangleException();
}
public double getArea() {
double var = (side1 + side2 + side3)/2;
double area = (var*(var-side1)*(var-side2)*(var-side3));
return Math.sqrt(area);
}
public double getPerimeter() {
return (side1+side2+side3);
}
public String toString() {
return "\nSide 1 = " + this.side1 + "\nSide 2 = " + this.side2
+ "\nSide 3 = " + this.side3;
}
}