Существует легкое решение вашей проблемы. Вместо немедленной печати каждого слова, если оно не имеет непрерывного повторения, добавьте его в переменную String с пробелом в конце, чтобы каждое слово разделялось пробелом. После прохождения цикла вы проверяете, установлен ли ваш флаг на false, и печатаете NONE, если он равен false. Однако, если это правда, выведите строку результата, в которую вы добавили все с помощью .trim () в конце.
for (int i = 0; i < words.length; i++) {
words[i] = sc.next();
}
String result = ""; /*This is the string that holds all the strings that you need to print.*/
for(int i=0;i<words.length;i++){
int j;
for(j=1;j<words[i].length();j++) {
if(words[i].charAt(j) == words[i].charAt(j-1)){
break;
}
}
if(j==words[i].length()){
truth = true;
result = result + (words[i]+" ");
}
}
if(!truth){
System.out.println("NONE");
}
else{
System.out.println(result.trim()); /*The trim function removes any redundant space in the beginning and the end of the string.*/
}
Конечно, при таком способе будет потрачено много Кучи памяти, но я думаю, что это для небольшого учебного проекта. Тем не менее, изучите StringBuilder о том, как его использовать, чтобы избежать создания большого объема памяти в куче!