PDA

View Full Version : [JAVA] errore in compilazione


MasterDany
13-04-2008, 13:29
Ciao a tutti ho cercato di scrivere un programma che calcola la distanza fra que punti.Quando compilto il file TestGiometrico.java mi dice:
C:\Documents and Settings\Computer\workspace\Incapsulamento\src>javac TestGeomet
rico.java
TestGeometrico.java:17: cannot find symbol
symbol : method dammiDistanza(Punto)
location: class Punto
System.out.println("i punti distano" + p1.dammiDistanza(p2));
^
1 error

Ecco i codice dei file:

Punto.java

public class Punto {
private int x,y;
public Punto(){
//costruttore senza parametri
}
public Punto(int x,int y){
this.setXY(x,y);
}
public void setX(int x){
this.x=x;
}

public void setY(int y){
this.y=y;
}
public void setXY(int x,int y){
this.setX(x);
this.setY(y);

}
public int getX(){
return this.x;

}
public int getY(){

return this.y;

}





}

Punto3D.java


public class Punto3D extends Punto{
private int z;
public Punto3D(){

}
public Punto3D(int x,int y,int z){
this.setXYZ(x,y,z);

}

public void setZ(int z){
this.z=z;


}
public void setXYZ(int x,int y,int z){
this.setXY(x,y);
this.setZ(z);

}
public int getZ(){

return this.z;
}

public double dammiDistanza(Punto p){
if(p instanceof Punto3D){
return this.calcolaDistanza((Punto3D)p);


}
else{
return -1;
}


}

private double calcolaDistanza(Punto3D p1){
int tmp1=(getX()-p1.getX())*(getX()-p1.getX());
int tmp2=(getY()-p1.getY())*(getY()-p1.getY());
int tmp3=(z-p1.z)*(z-p1.z);
return Math.sqrt(tmp1+tmp2+tmp3);
}


}

TestGeometrico.java

public class TestGeometrico {


public static void main(String args[]) {

int p1X=Integer.parseInt(args[0]);
int p1Y=Integer.parseInt(args[1]);
int p2X=Integer.parseInt(args[2]);
int p2Y=Integer.parseInt(args[3]);

Punto p1 = new Punto(p1X,p1Y);
Punto p2 = new Punto(p2X,p2Y);



System.out.println("i punti distano" + p1.dammiDistanza(p2));
}

}


Eclipse mi segnala errore qua:
dammiDistanza

Perchè?

Ecco l'errore di eclipse:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method dammiDistanza(Punto) is undefined for the type Punto

at TestGeometrico.main(TestGeometrico.java:17)

Sono disperato

wingman87
13-04-2008, 13:35
Perché stai richiamando il metodo dammiDistanza da un'istanza di Punto ma nella classe Punto questo metodo non è definito. L'hai definito solo nella classe Punto3D.

MasterDany
13-04-2008, 13:43
Scusate mi sono sbagliato l'errore che avevo no nera quello,l'avevo risolto già prima.Ma l'errore è questo:
Quando eseguo TestGeometrico:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at TestGeometrico.main(TestGeometrico.java:7)

khelidan1980
13-04-2008, 13:49
quanti argomenti gli passi al main?

MasterDany
13-04-2008, 13:50
dici qua?
public static void main(String args[]) {

int p1X=Integer.parseInt(args[0]);
int p1Y=Integer.parseInt(args[1]);
int p2X=Integer.parseInt(args[2]);
int p2Y=Integer.parseInt(args[3]);

khelidan1980
13-04-2008, 13:58
dici qua?
public static void main(String args[]) {

int p1X=Integer.parseInt(args[0]);
int p1Y=Integer.parseInt(args[1]);
int p2X=Integer.parseInt(args[2]);
int p2Y=Integer.parseInt(args[3]);

dalla linea di comando,presumo tu faccia:

java TestGeometrico arg0 arg1 arg2 arg3

MasterDany
13-04-2008, 14:01
facevo con eclipse (non ci sono abituato) ...non con cmd.exe se sono stupido
:D

khelidan1980
14-04-2008, 09:42
facevo con eclipse (non ci sono abituato) ...non con cmd.exe se sono stupido
:D

con eclipse devi andare in run->open run dialog...->arguments e poi mi spieghi come avrebbe dovuto andare senza passargli argomenti

MasterDany
14-04-2008, 13:35
grazie.L'ho appena inziato ad usare :D

RaouL_BennetH
14-04-2008, 13:55
Stai leggendo il libro di De Sio Cesari?

Fai attenzione che molti degli esempi che stanno sul libro hanno una vera e reale implementazione solo alcuni capitoli dopo :)

khelidan1980
14-04-2008, 14:35
grazie.L'ho appena inziato ad usare :D

ho capito ma tu stesso hai scritto un'applicazione che richiede il passaggio di argomenti al main e poi non ti poni il problema di passarli?E un non senso....