2017-04-03 27 views
-3

爲什麼我會在字符串中獲取java.lang.numberformatexception?我怎麼能不遇到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

更換'br.read()'和'br.readLine()'和檢查結果用'等於( 「Y」)'。這是[Scanner在使用next(),nextInt()或其他nextFoo()方法](http://stackoverflow.com/q/13102045/5221149)後跳過nextLine()的'BufferedReader'變體。 – Andreas

+0

請提供您使用的輸入。 –

+0

無論你正在閱讀的是不能被解析爲一個整數,只需在你的代碼上運行一個調試器,並檢查你實際正在讀的是什麼。 –

回答

0

這是因爲br.readLine()之前使用br.read()的,所以你總是會使用在每個br.readLine一個空字符串()。

只是稍作修改,使其工作:

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"); 
    } 
}