0

该程序的主要方法(运行 readInput 和 writeOutput 方法)位于不同的 java 文件中。我的问题如下。

这是它的粘贴箱

为什么在我输入字符串之前,Java 在第 31 行和第 32 行就给了我一个越界异常?我试图将字符串的第一个字符存储为一个字符,以便在下面的“if,else if,else”语句中使用它。

关于可能是什么问题的任何提示?我敢打赌这是我在打字时不小心掩饰的简单事情。

对于那些无法获得链接工作的人,代码如下。

    System.out.println("Is the nature increase, decrease, or neutral?");
char nature;
nature = keys.nextLine().toLowerCase().charAt(0);

if(nature=='i')
  natureMult=1.1;
else if(nature=='n')
  natureMult=1.0;
else if(nature=='d')
  natureMult=0.9;
else
{
  System.out.println("Error! You entered an invalid multiplier!");
  System.exit(0);
}
4

1 回答 1

1

Scanner#nextInt不消耗换行符

相反,它们被传递到下一个Scanner方法,就像这里的情况一样。在(the)问题中的语句nextInt之前没有使用换行符,因此实例没有阻塞。语句前加语句消耗字符nextLine()ScannerkeysnextLine()

keys.nextLine(); // add this 
nature = keys.nextLine().toLowerCase().charAt(0);
于 2013-10-22T19:22:44.790 回答