2017-04-03 1 views
-3

Pourquoi ai-je une java.lang.numberformatexception dans la chaîne ??Comment ne pas rencontrer java.lang.numberformatexception?

BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); 
     System.out.println("Do you have any budget range?. If yes press y else press n"); 
     char ch1=(char)br.read(); 
     if(ch1=='y') 
     { 
      System.out.println("Please enter the lower limit and then the higher limit"); 
      int low_buj = Integer.parseInt(br.readLine()); 
      int high_buj = Integer.parseInt(br.readLine()); 
     } 
     else 
     { 
      System.out.println("Oh okay"); 
     } 
+2

Remplacer 'br.read()' 'avec br.readLine()' et vérifier le résultat en utilisant 'égaux ("y")'. Ceci est une variante de BufferedReader de [Scanner saute nextLine() après avoir utilisé next(), nextInt() ou d'autres méthodes nextFoo()] (http://stackoverflow.com/q/13102045/5221149). – Andreas

+0

Veuillez indiquer l'entrée que vous avez utilisée. –

+0

Lorsque vous lisez ne peut pas être analysé en tant que nombre entier, il suffit d'exécuter un débogueur sur votre code et vérifiez ce que vous lisez réellement. –

Répondre

0

Il est à cause de l'utilisation br.read() avant br.readLine(), vous aura toujours une chaîne vide dans chaque br.readLine() à l'aide.

suffit de faire un peu de changements pour faire fonctionner:

BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); 
    System.out.println("Do you have any budget range?. If yes press y else press n"); 
    String s1 = br.readLine(); 
    if("y".equals(s1)) 
    { 
     System.out.println("Please enter the lower limit and then the higher limit"); 
     int low_buj = Integer.parseInt(br.readLine()); 
     int high_buj = Integer.parseInt(br.readLine()); 
    } 
    else 
    { 
     System.out.println("Oh okay"); 
    } 
}