在switch语句中的nextLine()。charAt(0)

时间:2015-02-05 00:01:26

标签: java switch-statement

我制作了一个非常基本的计算器程序,遇到了一个让我整个时间都感到困惑的问题。

代码:

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行对此负责?

0 个答案:

没有答案