PDA

Visualizza la versione completa : [JAVA] Errore: "Incompatible types"


zannas
10-11-2005, 17:11
Ciao a tutti ho un errore di questo tipo in questa applicazione:

C:\Lavoro\java\suorce>javac Area_by_Gauss.java
Area_by_Gauss.java:26: long cannot be dereferenced
return System.out.println("Numero vertici facenti parte del poli
gono:" + this.numero_vertici.toString());

^
Area_by_Gauss.java:26: incompatible types
found : void
required: java.lang.String
return System.out.println("Numero vertici facenti parte del poli
gono:" + this.numero_vertici.toString());
^
2 errors
l'applicazione non ancora finita ma che comunque da quell'errore lì è:

import java.io.*;
import pack.*;

class Area_by_Gauss {

long numero_vertici;
long area;
int coordinate_vertici[][][];
final String descrizione = "Con questo piccolo programma si sarà in grado di calcolare l'area di un qualsiasi poligono avendo tutte le coordinate dei suoi punti rispetto a un generico piano cartesiano. NB= L'unità di misura del risultato sarà come quella inserita e ovviamente elevata alla seconda.";

public static void main(String args[]){
Area_by_Gauss risultato = new Area_by_Gauss();
}

public Area_by_Gauss(){
System.out.println(this.descrizione);
System.out.println();
System.out.println("Formula: 1/2 * sommatoria[Ni * (Xi+1 - Xi-1])");
System.out.println("Inserisci il numero dei vertici della figura");
this.setNVertici();
Poligono figura = new Poligono(this.numero_vertici);
}

String setNVertici() throws IOException {
this.numero_vertici = System.in.read();
return System.out.println("Numero vertici facenti parte del poligono:" + this.numero_vertici.toString());
}

}
oltra agli errori che vi sono, praticamente dovrebbe a un certo punto chiedere quanti punti ha il poligono. Da tastiera inserisco un numero, questo numero deve essere il valore della variabile this.numero_vertici e successivamente come vedete dovrebbe essere stampato a video. Non riesco a schiodarmi

keratox
10-11-2005, 17:28
Non considerarlo solo come errore di tipo, considera anche questo "long cannot be dereferenced".

stai_tranquillo
10-11-2005, 17:39
stai invocando il metodo toString da un long (tipo primitivo)

sai già che i tipi primitivi non hanno nè metodi nè proprietà vero?

Brainjar
10-11-2005, 17:43
Un 'long' non ha il metodo .toString().
Utilizza


// Utilizza
String.valueOf(this.numero_vertici)

// al posto di
this.numero_vertici.toString()


Tra le altre cose, utilizzando NetBeans 3.6, per compilare ho dovuto
effettuare delle modifiche alle dichiarazioni.
Non so quale compilatore utilizzi, ma per eliminare alche il secondo
errore devi dichiarare la funzione come void, oltre che static.



public static void Area_by_Gauss() {
System.out.println(descrizione);
System.out.println();
System.out.println("Formula: 1/2 * sommatoria[Ni * (Xi+1 - Xi-1])");
System.out.println("Inserisci il numero dei vertici della figura");
try {
setNVertici();
} catch (IOException e) {
// Qui dovresti gestire l'eventuale errore
// infatti dichiari setNVertici() throws IOException
System.out.println("Errore di IO");
}
// Questa non l'ho potuta testare.
Poligono figura = new Poligono(this.numero_vertici);

}

public static void setNVertici() throws IOException {
numero_vertici = System.in.read();
System.out.println("Numero vertici facenti parte del poligono:" + String.valueOf(numero_vertici));
}

zannas
16-11-2005, 18:27
ho un piccolo problemino...non è il problema di prima, come faccio a recuperare dalla linea di comando cosa digito? cioè tipo il System.in.read(), però invece del numero giusto che inserisco mi da un numero da 0 a 255..come faccio a trasformare?

byaur
16-11-2005, 18:39
Originariamente inviato da zannas
ho un piccolo problemino...non è il problema di prima, come faccio a recuperare dalla linea di comando cosa digito? cioè tipo il System.in.read(), però invece del numero giusto che inserisco mi da un numero da 0 a 255..come faccio a trasformare?

basta guardare che dice la documentazione....

doc (http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStream.html#read())

infatti è come usare il metodo read(byte b[]) passandogli un solo elemento di array, cioè un solo byte(infatti 2^8 = 256, cioè da 0 a 255)
prova ad usare il metodo passandogli più byte...

:ciauz: :ciauz:

LeleFT
16-11-2005, 18:41
Originariamente inviato da Brainjar
Non so quale compilatore utilizzi[...]
Credo che utilizzi lo stesso che usi tu... NetBeans è solo un IDE tra tanti, ma il compilatore è solo uno: quello della Sun, che si chiama javac. :)


Ciao. :ciauz:

Loading