Ваш цикл for завершится, как только вы наберете длину более короткой строки, как вы делаете i < lengthOne && i < lengthTwo
. Таким образом, вам нужно продолжать цикл до тех пор, пока вы не доберетесь до конца более длинной строки, но прекратите сравнение, когда более короткая строка не содержит символов.
Примерно так можно было бы выполнить эту работу
public static void findMatching(String matchOne, String matchTwo) {
int lengthOne = matchOne.length();
int lengthTwo = matchTwo.length();
char charOne;
char charTwo;
for(int i = 0; i < lengthOne || i < lengthTwo; i++) {
if(i < lengthOne && i < lengthTwo) {
charOne = matchOne.charAt(i);
charTwo = matchTwo.charAt(i);
if (charOne == charTwo) {
System.out.print(charTwo);
} else {
System.out.print(".");
}
} else {
System.out.print(".");
}
}
}
Я не уверен, в чем смысл цикла while, поскольку он заставил бы программу работать вечно, однако, возможно, вы захотитечто как будто?