java.lang.NumberFormatException: Pour la saisie de texte: “ ”
Exception in thread "main" java.lang.NumberFormatException: For input string: " "
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:430)
at java.lang.Long.valueOf(Long.java:540)
at PckUtiles.lexec.leer(lexec.java:62)
at PckUtiles.lexec.verificar(lexec.java:34)
at PckjForms.Main.main(Main.java:40)
*J'ai à côté d'erreur lors de l'exécution du projet "Exception in thread "main" java.lang.NumberFormatException: Pour la saisie de texte:"
la fonction de ma classe est pour éviter de ré-exécuter l'application. pourrait aider à localiser la panne. merci beaucoup
*
voici ma classe lexec
public class lexec {
private String ruta = System.getProperties().getProperty("user.dir");
private File archivo = new File(ruta + "\\Sifme.tmp");
private int contador = 20;
public lexec(){};
public boolean verificar(){
if(archivo.exists()){
long time = leer();
long res = rTiempo(time);
if(res<contador){
JOptionPane.showMessageDialog(null, "La aplicación esta en ejecución");
System.exit(0);
return false;
}else{
tarea_();
return true;
}
}else{
sifme();
tarea_();
return true;
}
}
public long leer(){
String line = "0";
BufferedReader br;
try{
br = new BufferedReader(new FileReader(archivo));
while(br.ready()){
line = br.readLine();
}
}catch(IOException e){
System.err.println(e.getMessage());
}
return Long.valueOf(line).longValue();
}
public void tarea_(){
ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
ses.scheduleAtFixedRate(
new Runnable(){
@Override
public void run(){
sifme();
}
},1000,contador*1000,TimeUnit.MILLISECONDS);
}
public void sifme(){
Date fecha = new Date();
try{
BufferedWriter bw = new BufferedWriter(new FileWriter(archivo));
bw.write(String.valueOf(fecha.getTime()));
bw.close();
}catch(IOException e){
System.out.println(e.getMessage());
}
}
public long rTiempo(long tiempoN){
Date fecha = new Date();
long t1 = fecha.getTime();
long tiempo = t1 - tiempoN;
tiempo = tiempo/1000;
return tiempo;
}
public void detruir_(){
if(archivo.exists()){
archivo.delete();
System.exit(0);
}
}
}
- possible en double stackoverflow.com/questions/19801544/...
- Pas de Double c'est Double
- mais le sujet précédent a été supprimé par l'auteur. Donc pas de duplication à partir de maintenant 😉
Vous devez vous connecter pour publier un commentaire.
Bien que vous ne nous dites pas ce que la ligne nous donne l'erreur (même si vous devriez avoir) je peux en déduire que c'est cette ligne:
Le problème est
line
est une chaîne d'espaces, pas une chaîne numérique. Vous ne pouvez pas attendre pour convertir les espaces enLong
. C'est pourquoi vous obtenez cette erreur.J'aurais pensé à l'exception d'explications,
" "
ne peut pas être analysé comme unLong
.Essayez d'utiliser quelque chose comme
return line == null ? 0 : line.trim().isEmpty() ? 0 : Long.valueOf(line).longValue();
pour déterminer la validité de laString
valeur de la première et de retourner une valeur par défaut lorsqu'il n'est pas.Devrait vous souciez pas de différenciation entre un
null
String
ou un videString
vous pouvez également utiliserreturn line == null || line.trim().isEmpty() ? 0 : Long.valueOf(line).longValue();
qui peut être plus facile à lireOu, de lancer une sorte d'exception dans le cas où la valeur ne correspond pas à vos exceptions si nécessaire
return line == null || line.trim().isEmpty() ? 0 : Long.valueOf(line).longValue();
serait mieux car c'est plus facile à lire.null
et videString
de la même façon, juste pour dire...