StringIndexOutOfBoundsException:字符串索引超出范围:0

时间:2009-12-18 08:39:25

标签: java indexing

我得到了一个奇怪的异常代码。

我尝试使用的代码如下:

 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行是开始“而......”。

请帮忙,这让我感到沮丧!

2 个答案:

答案 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,则第二个版本不会打印“输入另一个租借”。