StringIndexOutOfBoundsException: индекс строки вне диапазона: 0 - PullRequest
1 голос
/ 18 декабря 2009

Я получаю странный код исключения.

Код, который я пытаюсь использовать, выглядит следующим образом:

 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 начинается с "while ...".

Пожалуйста, помогите, это сводит меня с ума!

Ответы [ 2 ]

8 голосов
/ 18 декабря 2009

Это произойдет, если another - пустая строка.

Мы не знаем, что такое класс Keyboard, но, предположительно, его метод nextLine может возвращать пустую строку ... поэтому вам следует проверить это тоже.

5 голосов
/ 18 декабря 2009

Fix:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...