我正在尝试编写一个简单的计算器 我要求用户输入第一个数字,然后输入第二个数字和作为字符的操作(即:+, - ,*,/),但是当我在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) ;
为什么?
答案 0 :(得分:0)
在读取第二个int后添加另一个sc.nextLine()
。这将消耗int之后的换行符,这将允许下一个sc.nextLine ()
获得正确的输入,而不是当前获得的空行。