Ho un piccolo problemino legato ad un programmino Java che sto scrivendo...
dopo aver fatto un po' di metodi di rito, ho creato 2 metodi per salvare su file e per caricare i dati da file.
Ovviamente il salvataggio va a buon fine, e nel caricamento mi compare una NullPointerException alla riga 166 di cui proprio non riesco ad identificarne le cause. (CreaListaUtenti.java è il file con il main da cui chiamo i metodi)
Il messaggio visualizzato è:
CITAZIONE
Exception in thread "main" java.lang.NullPointerException
at <login.java:166>
at <crealistautenti.java:30>
ecco la parte di codice incriminato, in spoiler metto tutto il codice del file
CITAZIONE
154 | public void readList() throws IOException {
155 |
156 | FileInputStream fin = new FileInputStream(fileName);
157 | BufferedInputStream bin = new BufferedInputStream(fin);
158 | DataInputStream din = new DataInputStream(bin);
159 |
160 | int numUtenti = din.readInt();
161 |
162 | System.out.print("numUtenti : " + numUtenti + "\n");
163 |
164 | User[] utenti = new User[25];
165 |
166 | for(int i = 0; i < numUtenti ; i++) { utenti[i].read(din , fileName, utenti, numUtenti); }
167 | }
import java.io.*;
class ArrayTerminato extends Exception{ }
public class Login {
private class User {
private String utente;
private String password;
// COSTRUTTORI
public User() {
utente = "utente";
password = "psw-utente";
}
public User(String user, String pass) {
utente = user;
password = pass;
}
// METODI SET()
public void setUtente(String user) {
utente = user;
}
public void setPassword(String pass) {
password = pass;
}
//METODI GET()
public String getUtente() {
return utente;
}
public String getPassword() {
return password;
}
//METODI I/O
public void save(String name, DataOutputStream marco) throws IOException {
FileOutputStream fout = new FileOutputStream(name);
BufferedOutputStream bout = new BufferedOutputStream(fout);
marco.writeUTF(utente);
marco.writeUTF(password);
}
public void read(DataInputStream marco, String in, User[] users, int num) throws IOException {
FileInputStream fin = new FileInputStream(in);
BufferedInputStream bin = new BufferedInputStream(fin);
String utente = marco.readUTF();
String password = marco.readUTF();
users[num] = new User(utente, password);
System.out.println("Letti i dati dell'account : \n" +
" Utente : " + utente + "\n" +
"Password : " + password);
}
} // end 'User.java'
//CAMPI PRIVATE
private User[] utenti;
private int numUtenti;
private boolean login = false;
private String fileName = "PassList.txt";
//COSTRUTTORI
public Login() {
utenti = new User[25];
numUtenti = 0;
}
public Login(String user, String pass) {
utenti = new User[25];
numUtenti = 0;
}
/*
Metodo per aggiungere un utente
*/
public void addUser(String userName, String userPass) throws ArrayTerminato {
if (numUtenti == utenti.length) {
throw new ArrayTerminato();
}
utenti[numUtenti] = new User(userName, userPass);
numUtenti++;
}
/*
Metodo per stampare a video tutti gli utenti e le loro password
*/
public void toPrinter() {
for (int i = 0; i < numUtenti; i++) {
System.out.println(i + " - UserName : " + utenti[i].getUtente() + "\n" +
" Password : "+ utenti[i].getPassword());
System.out.println(" <--------------------->");
}
}
/*
Metodo per verificare che al nome utente corrisponda la relativa password
*/
public boolean verify(String user, String pass) {
for (int i = 0; i < numUtenti; i++) {
login = user.equals(utenti[i].getUtente()) && pass.equals(utenti[i].getPassword());
}
return login;
}
// OUTPUT SU FILE <--> INPUT DA FILE
/*
Metodo per salvare in un file nome e password di un utente
*/
public void saveList() throws IOException {
FileOutputStream fout = new FileOutputStream(fileName);
BufferedOutputStream bout = new BufferedOutputStream(fout);
DataOutputStream dout = new DataOutputStream(bout);
dout.writeInt(numUtenti);
// System.out.print("salvato dato 0" + "\n");
for(int i = 0; i < numUtenti ; i++) {
utenti[i].save(fileName, dout);
// System.out.print("salvato dato 0" + i + "\n");
}
dout.flush();
dout.close();
}
/*
Metodo per recuperare da un file nome e password di un utente
*/
public void readList() throws IOException {
FileInputStream fin = new FileInputStream(fileName);
BufferedInputStream bin = new BufferedInputStream(fin);
DataInputStream din = new DataInputStream(bin);
int numUtenti = din.readInt();
System.out.print("numUtenti : " + numUtenti + "\n");
User[] utenti = new User[25];
for(int i = 0; i < numUtenti ; i++) { utenti[i].read(din , fileName, utenti, numUtenti); }
}
}
Qualcuno mi sa aiutare nel risolvere il problema????
Ho risolto grazie lo stesso...sono "passato per un'altra parte", e ho aggirato il problema....Edited by Endorama - 4/5/2008, 20:23