我得到了一个奇怪的异常代码。
我尝试使用的代码如下:
do
{
//blah blah actions.
System.out.print("\nEnter another rental (y/n): ");
another = Keyboard.nextLine();
}
while (Character.toUpperCase(another.charAt(0)) == 'Y');
错误代码是:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:686)
at Store.main(Store.java:57)
第57行是开始“而......”。
请帮忙,这让我感到沮丧!
答案 0 :(得分:8)
如果another
为空字符串,则会发生这种情况。
我们不知道Keyboard
类是什么,但可能它的nextLine
方法可以返回一个空字符串......所以你也应该检查它。
答案 1 :(得分:5)
修正:
do
{
//blah blah actions.
System.out.print("\nEnter another rental (y/n): ");
another = Keyboard.nextLine();
}
while (another.length() == 0 || Character.toUpperCase(another.charAt(0)) == 'Y');
甚至更好:
do
{
//blah blah actions.
System.out.print("\nEnter another rental (y/n): ");
while(true) {
another = Keyboard.nextLine();
if(another.length() != 0)
break;
}
}
while (Character.toUpperCase(another.charAt(0)) == 'Y');
如果您不小心按Enter,则第二个版本不会打印“输入另一个租借”。