andbin ha scritto:
sauzer90 ha scritto:
Voglio creare un programma che calcoli il perimetro di un triangolo in un piano cartesiano dati 3 punti. Solo che che mi dà un eccezione ma non ne capisco il motivo
Non hai precisato quale eccezione (potrei presumere NullPointerException ?).
Comunque, la classe Punto è ok, strutturalmente è corretta. La classe Triangolo no, è incompleta. Hai messo 2 costruttori che alla fine non fanno nulla di utile. Quindi le 3 variabili di istanza p1/p2/p3 restano a null.
Il fatto di tenere anche base/altezza/lato1/ec... come variabili di istanza è invece dubbio. Nel senso che per farlo correttamente dovresti tenere allineate le cose rispetto ai 3 punti.
Quindi:
a) Tieni solo p1/p2/p3
b) Non sparpagliare/ripetere i Math.sqrt e Math.pow, fai la cosa sensata: che Punto sia in grado di fornire la distanza da un altro Punto
Grazie ancora Andrea! sì è NullPointerException comunque io avevo creato la classe segmento e ho cambiato in questa maniera...ma l'eccezione rimane la stessa:
public class Segmento {
private static Punto p1= null;
private static Punto p2= null;
public Segmento(int x1, int y1, int x2, int y2)
{
p1= new Punto(x1,y1);
p2=new Punto(x2,y2);
}
public Segmento(int x2, int y2){
this(0,0,x2,y2);
}
public Segmento(Punto p1, Punto p2){
this(p1.getX(),p1.getY(),p2.getX(),p2.getY());
}
public Segmento(){
this(0,0,0,0);
}
public double Lunghezza(){
return Math.sqrt(Math.pow(p1.getX()-p2.getX(),2)+Math.pow(p1.getY()+p2.getY(), 2));
}
{
}
}
public class Triangolo {
private Punto p1=null;
private Punto p2=null;
private Punto p3=null;
public Triangolo(Punto p1, Punto p2, Punto p3){
}
public double PerimetroTriangolo(){
Segmento lato1= new Segmento(p1,p2);
Segmento lato2= new Segmento(p1,p3);
Segmento lato3=new Segmento(p2,p3);
return lato1.Lunghezza()+lato2.Lunghezza()+lato3.Lunghezza();}
}