2013-04-24 2 views
0

Может кто-нибудь понять, почему или где мой код будет давать мне проблемы, я получаю индекс строки вне диапазона: -1 ошибка.Java String Index вне диапазона, не знаю, что не так

То, что я пытаюсь сделать, это получить вход от пользователя через графический интерфейс и принять этот ввод и проверить, содержит ли он какие-либо цифры, т.е. 1,2,3 ... и конвертировать их в строки («один», «два», «три»), , заменив их в предложении.

так это предложение (у меня есть 9 котов и 1 собака) приведет к (у меня есть девять кошек и одна собака)

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

спасибо, ребята!

private String getResultStr() 
{ 
    /*** Local Variables ***/ 

    StringBuffer result; 
    String userInput; 
    int digit; 
    int count; 
    String finalResult = ""; 
     String digitAsStr; 

    /*** Instantiate ***/ 

    result = new StringBuffer(); 

    /*** Extract Digits (if any) ***/ 

    userInput = txtInput.getText(); 
    result.append(userInput); 

    count = 0; 

    while (count < result.length()) 
    { 

     for (int i = 0; i < result.length(); i++) 
      if (result.charAt(i) >= '0' || result.charAt(i) <= '9') 
      { 
       digit = result.charAt(i); 
       digitAsStr = digitToString(digit); 
       result.deleteCharAt(i); 
       result.insert(i - 1, digitAsStr); 
      } 

     count++; 
    } 

    finalResult = result.toString(); 

    return finalResult; 

} 
+0

Какая строка вызывает ошибку? – Blorgbeard

+1

(это то, что вы должны проверить задолго до того, как спросите о stackoverflow, кстати!) – Blorgbeard

ответ

0

Ваше заявление, если: if (result.charAt(i) >= '0' || result.charAt(i) <= '9') должно быть: if (result.charAt(i) >= '0' && result.charAt(i) <= '9') В противном случае все будет принято.

1

Вы начинаете итерации от for (int i = 0; i < result.length(); i++) и тогда вы получите

result.insert(i - 1, digitAsStr); 
+0

Приятно поблагодарить вас, ребята, которые исправили мои ошибки, теперь мне просто нужно беспокоиться о том, чтобы получить правильный ввод на дисплей !!! высоко оценили –

0

Ваша линия

result.insert(i - 1, digitAsStr); 

на итерации 0 попытается получить доступ к индексу в -1.

Смежные вопросы