Triangle Class
The code has been modified slightly and now uploaded to the site.

Main.java
import java.util.Scanner;
public class Main extends RuntimeException{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("Enter three numbers: ");
double left = input.nextInt();
double right = input.nextInt();
double bottom = input.nextInt();
System.out.print("Enter color: ");
String color = input.next();
boolean value = false;
System.out.println("Is it filled?: (0 for false / 1 for true) ");
try{
int filledOrNot = input.nextInt();
if (filledOrNot == 0){
value = false;
}
else if (filledOrNot == 1){
value = true;
}
else{
throw new InvalidNumberException("InvalidNumberException: NUMBER MUST BE 0 OR 1!");
}
Triangle triangle = new Triangle(left, right, bottom, color, value);
System.out.println(triangle);
input.close();
}catch(InvalidNumberException e){
System.out.println(e.getMessage());
}
}
}
Triangle.java
public class Triangle extends GeometricObject{
private double left;
private double right;
private double down;
private double halfOfBottom;
private double area;
private double getMiddleSide;
public Triangle(){
}
public Triangle(double left, double right, double down, String color, boolean filled){
super(color, filled);
this.left = left;
this.right = right;
this.down = down;
}
public double getArea(){
// halfOfBottom = down / 2;
// getMiddleSide = Math.sqrt(Math.pow(left, 2) - Math.pow(halfOfBottom, 2));
// area = halfOfBottom * getMiddleSide / 2;
area = (left + right + down) / 2;
return area;
}
public double getPerimeter(){
return left + right + down;
}
@Override
public String toString(){
return super.toString() + " Area: " + getArea() + " Perimeter: " + getPerimeter();
}
}
GeometricObject.java
public abstract class GeometricObject {
private String color = "white";
private boolean filled;
private java.util.Date dateCreated;
/** Construct a default geometric object */
protected GeometricObject(){
dateCreated = new java.util.Date();
}
/** Construct a geometric object with color and filled value */
protected GeometricObject(String color, boolean filled){
dateCreated = new java.util.Date();
this.color = color;
this.filled = filled;
}
/** Return color */
public String getColor(){
return color;
}
/** Set a new color */
public void setColor(String color){
this.color = color;
}
/** Return filled. Since filled is boolean,
* the getter method is named is Filled */
public boolean isFilled(){
return filled;
}
/** Set a new filled */
public void setFilled(boolean filled){
this.filled = filled;
}
/** Get dateCreated */
public java.util.Date getDateCreated(){
return dateCreated;
}
@Override
public String toString(){
return "created on " + dateCreated + "\ncolor: " + color + " and filled: " + filled;
}
/** Abstract method getArea */
public abstract double getArea();
/** Abstract method getPerimeter */
public abstract double getPerimeter();
}
InvalidNumberException.java
public class InvalidNumberException extends RuntimeException{
public InvalidNumberException(){
}
public InvalidNumberException(String msg){
super(msg);
}
}