PDA

View Full Version : [java] errore esecuzione metodo


alberto t.
13-12-2009, 11:27
Ho realizzato un programma in java.

Questa è la prima classe;
package temperatura;
import java.io.*;
public class Temperatura implements Serializable {

private String città, data;
private double temperatura;

public Temperatura(String città, String data, double temperatura) {
this.città = città;
this.data = data;
this.temperatura = temperatura;
}

public void setCittà(String città) {
this.città = città;
}

public void setData(String data) {
this.data = data;
}

public void setTemperatura(double temperatura) {
this.temperatura = temperatura;
}

public String getCittà() {
return città;
}

public String getData() {
return data;
}

public double getTemperatura() {
return temperatura;
}
}

Questa è la seconda:
package temperatura;

import java.io.*;

public class Main {

public void aggiungi() {
try {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
ObjectOutputStream scrivioggetto = new ObjectOutputStream(new FileOutputStream("temperatura.dat"));

System.out.println("Dammi data: ");
String data = input.readLine();
System.out.println("Dammi temperatura: ");
String line = input.readLine();
double temperatura = Double.parseDouble(line);
System.out.println("Dammi città: ");
String città = input.readLine();

Temperatura t1 = new Temperatura(città, data, temperatura);
scrivioggetto.writeObject(t1);

scrivioggetto.close();

} catch (IOException eccezione) {
eccezione.getMessage();
} catch (Exception eccezione) {
eccezione.getMessage();
}
}

public static void main(String[] args) throws Exception {
try {
Temperatura m1 = new Temperatura();
m1.aggiungi();

ObjectInputStream leggi = new ObjectInputStream(new FileInputStream("temperature.dat"));
boolean finefile = false;
while (finefile == false) {
Temperatura t1 = (Temperatura) leggi.readObject();
if (t1 == null) {
finefile = true;
} else {
System.out.println("Città: " + t1.getCittà() + ", data: " + t1.getData());
for (int i = 0; i < t1.getTemperatura(); i++) {
System.out.print("#");
}
}
}
leggi.close();
} catch (IOException eccezione) {
eccezione.getMessage();
} catch (Exception eccezione) {
eccezione.getMessage();
}


}
}

Il problema è qui:
Temperatura m1 = new Temperatura();
m1.aggiungi();
Errore:
symbol : constructor Temperatura()
location: class temperatura.Temperatura
Temperatura m1 = new Temperatura();

symbol : method aggiungi()
location: class temperatura.Temperatura
m1.aggiungi();
Non so cosa mettere fra le parentesi di "new Temperatura()".
Vorrei che il mio oggetto sia inizializzato con nessun valore. (nel metodo aggiungi infatti i valori li fornisco io)

Grazie anticipatamente.

Allure
13-12-2009, 11:39
Creati un altro costruttore che non abbia bisogno di parametri.

alberto t.
13-12-2009, 11:51
Creati un altro costruttore che non abbia bisogno di parametri.
Come faccio?

PGI-Bis
13-12-2009, 13:05
usa il costruttore che hai già. Anzichè "new Temperatura()" scrivi:

new Temperatura(null, null, null, 0);

alberto t.
13-12-2009, 13:40
Non funziona lo stesso:
Temperatura m1 = new Temperatura(null, null, null, 0);
m1.aggiungi();


symbol : constructor Temperatura(<nulltype>,<nulltype>,<nulltype>,int)
location: class temperatura.Temperatura
Temperatura m1 = new Temperatura(null, null, null, 0);

symbol : method aggiungi()
location: class temperatura.Temperatura
m1.aggiungi();

wingman87
13-12-2009, 13:52
Sì, perché in realtà i parametri erano 3:
new Temperatura(null, null, 0)

alberto t.
13-12-2009, 13:57
Ok, grazie.
Ora il problema rimane questo:
symbol : method aggiungi()
location: class temperatura.Temperatura
m1.aggiungi();

Inoltre se provo ad eseguire questa porzione di codice:
try {

ObjectInputStream leggi = new ObjectInputStream(new FileInputStream("temperature.dat"));
boolean finefile = false;
while (finefile == false) {
Temperatura t1 = (Temperatura) leggi.readObject();
if (t1 == null) {
finefile = true;
} else {
System.out.println("Città: " + t1.getCittà() + ", data: " + t1.getData());
for (int i = 0; i < t1.getTemperatura(); i++) {
System.out.print("#");
}
}
}
leggi.close();
} catch (IOException eccezione) {
eccezione.getMessage();
} catch (Exception eccezione) {
eccezione.getMessage();
}
Non mi stampa il contenuto del file "temperature.dat"

Come mai?

wingman87
13-12-2009, 14:01
Perché il metodo aggiungi è un metodo di Main, non di Temperatura. Mi dai l'impressione di non conoscere molto il linguaggio che stai utilizzando. Se è così ti consiglio di leggerti un buon libro per colmare le lacune.