quoi de mal?(NumberFormatException: null)
import java.io.*;
class AccountInfo {
private String lastName;
private String firstName;
private int age;
private float accountBalance;
protected AccountInfo(final String last,final String first,final int ag,final float balance) throws IOException{
lastName=last;
firstName=first;
age=ag;
accountBalance=balance;
}
public void saveState(final OutputStream stream){try{
OutputStreamWriter osw=new OutputStreamWriter(stream);
BufferedWriter bw=new BufferedWriter(osw);
bw.write(lastName);
bw.newLine();
bw.write(firstName);
bw.write(age);
bw.write(Float.toString(accountBalance));
bw.close();}
catch(IOException e){
System.out.println (e);
}
}
public void restoreState(final InputStream stream)throws IOException{
try{
InputStreamReader isr=new InputStreamReader(stream);
BufferedReader br=new BufferedReader(isr);
lastName=br.readLine();
firstName=br.readLine();
age=Integer.parseInt(br.readLine());
accountBalance=Float.parseFloat(br.readLine());
br.close();}
catch(IOException e){
System.out.println (e);
}
}
}
class accounto{
public static void main (String[] args) {try{
AccountInfo obj=new AccountInfo("chaturvedi","aayush",18,18);
FileInputStream fis=new FileInputStream("Account.txt");
FileOutputStream fos=new FileOutputStream("Account,txt");
obj.saveState(fos);
obj.restoreState(fis);}
catch(IOException e){
System.out.println (e);
}
}
}
im obtenir l'erreur suivante: Exception in thread "main" java.lang.NumberFormatException: null
à java.lang.Entier.parseInt(Integer.java:454)
à java.lang.Entier.parseInt(Integer.java:527)
au AccountInfo.restoreState(accounto.java:43)
au accounto.principale(accounto.java:60)
aucun remède à cela?
OriginalL'auteur Aayush Chaturvedi | 2012-07-22
Vous devez vous connecter pour publier un commentaire.
C'est votre code:
Et voici la documentation de
BufferedReader.readLine()
(en gras le mien):En fait, vous n'avez jamais vraiment vérifier si EOF a été atteint. Pouvez-vous être certain de votre entrée (s'avère que vous ne pouvez pas).
Aussi pour
Integer.parseInt()
:null
est pas une "analysée entier". La solution la plus simple est de vérifier votre saisie et la gestion des erreurs en quelque sorte:quoi? Tu veux dire une valeur par défaut?
age = ageStr != null? Integer.parseInt(br.readLine()) : 18
?ok désolé trouvé l'erreur merci!
OriginalL'auteur Tomasz Nurkiewicz
À partir de cette ligne:
Il semble que vous êtes en train de lire la fin de la flot des
br.readLine()
est null. Et vous ne pouvez pas analyser la valeur null dans un int.OriginalL'auteur Jon Lin
La
br.readLine()
méthode retourne la valeur null, ce qui ne peut pas être convertie en un Entier - probablement la raison pour cela est que la fin du flux est atteinte.OriginalL'auteur codebox
1. Je pense que la valeur retournée par
br.readLine()
est null.2. Donc, il ne peuvent PAS être convertis de la Chaîne en Entier.
3. C'est la raison pour laquelle vous faites
NumberFormatException
4. Pour gérer cela, il faut mettre ce code dans
try/catch
bloc.OriginalL'auteur Kumar Vivek Mitra