Во-первых, вам нужно исправить индекс цикла. Значение должно быть от 1
до s.length() - 1
, в противном случае вы получите исключение индекса вне границ, если последний или первый символ равен *
.
Во-вторых, кажется, что вы хотите вывести «РАЗНОЕ», если вокруг *
есть хотя бы одна пара символов, которая отличается. Вы можете сделать это, break
выйдя из цикла, как только вы найдете другую пару:
// be careful of bounds of the indexes
for (int i = 1; i< s.length() - 1; i++) {
if ((s.charAt(i) == '*')) {
if ((s.charAt(i-1)) == s.charAt(i+1)) {
ind = "SAME";
} else {
ind = "DIFFERENT";
break;
}
}
}
System.out.print(ind);
В качестве альтернативы вы можете использовать регулярное выражение:
if (Pattern.compile("(.)\\*(?!\\1)").matcher(s).find()) {
System.out.println("DIFFERENT");
} else {
System.out.println("SAME");
}