Why is it throwing "number format exception" ?

Kailash's Avatar, Join Date: Jul 2007
Go4Expert Member
Code:
//WAP That convert integer value into binary,octal and hexdecimal.

import java.io.*;

class numconv
{
 public static void main(String s[])throws IOException
   { 
     BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

     char ch='y'; 
     int opt,num;
     String bin,oct,hex;


     do
      {

       System.out.println("*******  1: Convert number to Binary format ********");
       System.out.println("*******  2: Convert number to Octal format *********");
       System.out.println("*******  3: Convert number to Hexadecimal format ***");
       
       System.out.print("\n\n Enter Option :");
       opt=Integer.parseInt(br.readLine());

       switch(opt)
         {
            case 1:
                    System.out.print("\n\nEnter Number :");
                    num=Integer.parseInt(br.readLine());
                    bin=Integer.toBinaryString(num);
                    System.out.println("\nBinary equivalent of "+num+" is "+bin);
                    break; 

            case 2:
                    System.out.print("\n\nEnter Number :");
                    num=Integer.parseInt(br.readLine());
                    oct=Integer.toOctalString(num);
                    System.out.println("\nOctal equivalent of "+num+" is "+oct);
                    break;  

            case 3:
                    System.out.print("\n\nEnter Number :");
                    num=Integer.parseInt(br.readLine());
                    hex=Integer.toHexString(num);
                    System.out.println("\nHexadecimal equivalent of "+num+" is "+hex);
                    break;

           
         }

       System.out.print("\n\n Enter your choice(y/n) :");
       ch=(char)br.read();
       
      }while(ch!='n');

   }
}


Here is the output


******* 1: Convert number to Binary format ********
******* 2: Convert number to Octal format *********
******* 3: Convert number to Hexadecimal format ***


Enter Option :1


Enter Number :5643

Binary equivalent of 5643 is 1011000001011


Enter your choice(y/n) :y

Here, when i am entering 'y' or value other than 'n' it is throwing exception.

******* 1: Convert number to Binary format ********
******* 2: Convert number to Octal format *********
******* 3: Convert number to Hexadecimal format ***


Enter Option :Exception in thread "main" java.lang.NumberFormatException: For i
nput string: ""
at java.lang.NumberFormatException.forInputString(Num berFormatException.
java:48)
at java.lang.Integer.parseInt(Integer.java:447)
at java.lang.Integer.parseInt(Integer.java:476)
at numconv.main(numconv.java:24)

Last edited by shabbir; 22Jan2008 at 17:38.. Reason: Code block
0
dontbugme's Avatar
Banned
you type a letter "y", and then you type a line return

read() just reads one character ("y")

the line return is still in the stream

then when readLine() is called, it reads until it encounters a line return, which is the first character it encounters

so it returns an empty line

Integer.parseInt() cannot parse an empty string
0
pradeep's Avatar, Join Date: Apr 2005
Team Leader
change br.readLine() to br.read();
0
arbaz.it's Avatar, Join Date: Feb 2008
Ambitious contributor
hi can you please give some explanation for your code i needed some help