Scanner类的java异常

时间:2014-10-19 14:32:00

标签: java variables object java.util.scanner

我正在尝试编写一个简单的计算器 我要求用户输入第一个数字,然后输入第二个数字和作为字符的操作(即:+, - ,*,/),但是当我在Scanner类上使用相同的对象时,我得到一个异常 但是当我创建一个新对象时,它的工作原理!

Scanner sc = new Scanner (System.in) ; 
    int a , b,res ; 
    char c ; 
    a=0 ; 
    b=0 ; 

    System.out.print("Entrer the frst num ") ;
    a = sc.nextInt() ; 
    System.out.print("entre the second : ") ; 
    b= sc.nextInt() ; 
    System.out.print("the operation plz  ") ; 
    c = sc.nextLine().charAt(0) ;

在这种情况下,我得到了这个例外:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at javatut.tut.main(tut.java:21)

但是当我改变时它会起作用:

 Scanner sc = new Scanner (System.in) ; 
 Scanner sc2 = new Scanner (System.in) ;
    int a , b,res ; 
    char c ; 
    a=0 ; 
    b=0 ; 

    System.out.print("Entrer the frst num ") ;
    a = sc.nextInt() ; 
    System.out.print("entre the second : ") ; 
    b= sc.nextInt() ; 
    System.out.print("the operation plz  ") ; 
    c = sc2.nextLine().charAt(0) ;

为什么?

1 个答案:

答案 0 :(得分:0)

在读取第二个int后添加另一个sc.nextLine()。这将消耗int之后的换行符,这将允许下一个sc.nextLine ()获得正确的输入,而不是当前获得的空行。