我制作了一个非常基本的计算器程序,遇到了一个让我整个时间都感到困惑的问题。
代码:
switch(operation){
case 'a':
case 'A':
addition(n);
operation = n.nextLine().charAt(0);
break;
当我运行程序并输入任一字符(进程代码使用Scanner对象n来确定我键入的字符)时,方法添加(n)按预期工作。基本上switch语句在while循环中,所以它一直执行直到我输入E'并且上面代码中的第5行将改变char操作,这样它就不会执行加法开关块一遍又一遍。第5行operation = n.nextLine().charAt(0);
会给我一个错误:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
为什么它会给我这个错误?更令我烦恼的是我在交换机内部的默认设置是类似的结构,但完全相同的代码将适用于它。
default:
System.out.println("Invalid entry. Refer to above menu and input"
+ " your choice of operation.");
operation = n.nextLine().charAt(0);
break;
非常感谢你的时间。
编辑:如果我注释掉方法addition(n)
,第5行将正常工作,允许我更改我的字符操作。为什么第4行对此负责?