2014-01-23 3 views
0
private String theLetters = "_ _ _ _ _\n"; 



StringBuilder myName = new StringBuilder(theLetters);  

for(char e : theSecretWord.toLowerCase().toCharArray()) 
{ 
    if(e == theUsersGuess.charAt(0)) 
    { 
     int index = theSecretWord.indexOf(e) * 2; 
     myName.setCharAt(index, theUsersGuess.charAt(0)); 
     theLetters = myName.toString(); 
    } 
} 

По какой-то причине это заменит только первое вхождение буквы из String theSecretWord, а не второе, даже если это для каждого цикла проходит через каждый символ и соответственно заменяет его в Letters. Я не понимаю, почему он не заменит больше одного письма.Как заменить второе появление символа в строке? (Java)

Я думаю, что это потому, что цикл останавливается, когда он находит подходящее письмо, хотя оно не должно.

+0

Посмотрите на документацию для строки: http://docs.oracle.com/javase/7/docs/api/java/lang /String.html#indexOf(int) indexOf (char) всегда дает вам первое вхождение – mdewitt

+2

Ваша проблема уже решена здесь: http://stackoverflow.com/questions/5034442/java-indexes-of-all-occurrences-of -character-in-a-string – Lotus

+0

Yup you right @mdewitt Я совсем забыл об этом. –

ответ

0

Я думаю, что это код, который вы ищете,

String word, letter; 
     word = "test"; 
     letter = "t"; 
     int i = 0; 

     i = word.indexOf(letter); 

     while (i > -1) { 
      // store i in arrayList 
      i = word.indexOf(letter, i + 1);} 
Смежные вопросы