2016-10-26 2 views
0
for (int k=0;k<lngth;k++) 
       { 
        if (Character.toString(line.charAt(k)).equals(gss)) 
        { 
         upd=upd.substring(0,k)+" "+gss+" "+upd.substring(k+1); 
         c++; 
        } 
       } 

В приведенном выше коде, «ГСС» это буква вводится от пользователя, «строка» это слово сказать, Emotion, «lngth» длина линии и «UPD» хранит обновленный строка, если введенная буква совпадает с любой из букв «строка». Ниже приведена часть вывода. И я не могу понять ошибку.Сложность понимания логики

Пожалуйста, если вы найдете ошибку.

Спасибо заранее!


Введите букву, чтобы угадать слово

е

E _ _ _ _ _ _

Введите букву, чтобы угадать слово

о

EOO _ _ _ _ _ _

Введите букву, чтобы угадать слово

м

МОО _ _ _ _ _ _

Введите букву, чтобы угадать слово

п

MONO _ _ _ _ _ _

Введите письмо, чтобы угадать слово

+2

Пожалуйста, пересмотрите страницу SO [Как задать хороший вопрос] (http://stackoverflow.com/help/how -to-ask), чтобы улучшить ваш вопрос и, в свою очередь, лучше дать другим возможность реагировать. –

+0

@NickBell Я знаю, что это не совсем хороший вопрос, но проблема такая, я не мог найти лучшего способа спросить. Если вопрос непонятен, спросите, какая часть его неясно. Но мне очень жаль, что я не могу сделать это лучше. –

+0

@ShinjineeMaiti Отредактируйте свой заголовок, чтобы суммировать основной вопрос вашего вопроса. Общий заголовок без содержания бесполезен и груб. –

ответ

2

Похоже, ваш код предполагает, что длина строки upd совпадает с строкой line. Однако, как только вы назначите новый String на upd, вы увеличите его длину на 2 (из-за добавленных пробелов), что означает индексы line Строка больше не соответствует индексам upd Строка.

Попробуйте удалить добавленные пробелы и посмотреть, если это решит вашу проблему:

for (int k=0;k<lngth;k++) 
{ 
    if (Character.toString(line.charAt(k)).equals(gss)) 
    { 
     upd=upd.substring(0,k)+gss+upd.substring(k+1); 
     c++; 
    } 
} 
Смежные вопросы