Итак, это мой код:
public class Phrase {
private String currentPhrase;
public Phrase (String p) {
currentPhrase = p;
}
public int findNthOccurrence(String str, int n) {
int c = 0;
for(int i = 0; i < currentPhrase.length() - str.length(); i++) {
if(str.equals(currentPhrase.substring(i,i+str.length())))
c++;
if(c == n)
return i;
}
return -1;
}
public void replaceNthOccurence(String str, int n, String rep) {
int temp = findNthOccurrence(str,n);
if(temp == -1) {
currentPhrase = currentPhrase;
}
currentPhrase = currentPhrase.substring(0,temp+1) + rep +
currentPhrase.substring(currentPhrase.length() - rep.length(), currentPhrase.length()-1);
}
}
Метод findNthOccurrence находит индекс n-го вхождения строки.
Это мой основной код:
Phrase phrase1 = new Phrase("A cat ate late.");
phrase1.replaceNthOccurence("at", 1, "rane");
System.out.println(phrase1);
Phrase phrase2 = new Phrase("A cat ate late.");
phrase2.replaceNthOccurence("at", 6, "xx");
System.out.println(phrase2);
Phrase phrase3 = new Phrase("A cat ate late.");
phrase3.replaceNthOccurence("bat", 2, "xx");
System.out.println(phrase3);
Phrase phrase4 = new Phrase("aaaa");
phrase4.replaceNthOccurence("aa", 1, "xx");
System.out.println(phrase4);
Phrase phrase5 = new Phrase("aaaa");
phrase5.replaceNthOccurence("aa", 2, "bbb");
System.out.println(phrase5);
Когда я их распечатываю, я получаю:

Вот как это должно выглядеть: 
Как мне перестать получать странные символы, когда я его распечатываю, и правильный ли метод replaceNthOccurence?