import javax.swing.*;

public class ProvaTriangoli {
  public static void main(String[] args) {
    String stringaInput;
    stringaInput = JOptionPane.showInputDialog("Scegli il LATO 1");
    double l1 = Double.parseDouble(stringaInput);
    stringaInput = JOptionPane.showInputDialog("Scegli il LATO 2");
    double l2 = Double.parseDouble(stringaInput);
    stringaInput = JOptionPane.showInputDialog("Scegli il LATO 3");
    double l3 = Double.parseDouble(stringaInput);
    
    Triangolo mioTriangolo = new Triangolo(l1,l2,l3);
    if(mioTriangolo.isValido()) 
      JOptionPane.showMessageDialog(null, "L'area del triangolo è " +
        mioTriangolo.getArea() + "\ne il perimetro è " + mioTriangolo.getPerimetro());
    else    
      JOptionPane.showMessageDialog(null, "Triangolo NON valido");
    
    System.exit(0);
  }
}

class Triangolo {
  double lato1, lato2, lato3;
  
  public Triangolo() {
    this.lato1 = this.lato2 = this.lato3 = 1;
  }
  
  public Triangolo(double l1, double l2, double l3) {
    this.lato1 = l1;
    this.lato2 = l2;
    this.lato3 = l3;
  }
  
  public double getLato1() {
    return this.lato1;
  }

  public double getLato2() {
    return this.lato2;
  }

  public double getLato3() {
    return this.lato3;
  }

  public void setLato1(double x) {
    this.lato1 = x;
  }
  
  public void setLato2(double x) {
    this.lato2 = x;
  }

  public void setLato3(double x) {
    this.lato3 = x;
  }
  
  public boolean isValido() {
    if( (this.lato1+this.lato2>this.lato3) && 
      (this.lato2+this.lato3>this.lato1) &&
      (this.lato3+this.lato1>this.lato2) )
      return true;
    else
      return false;
  }
  
  public double getPerimetro() {
    if(this.isValido()) 
      return this.lato1 + this.lato2 + this.lato3;
    else
      return Double.NaN;
  }
  
  public double getArea() {
    if(this.isValido()) { 
      double p = this.getPerimetro()/2;
      return Math.sqrt(p*(p-this.lato1)*(p-this.lato2)*(p-this.lato3));
    }
    else
      return Double.NaN;
  }
  
}