2 回答

TA貢獻1780條經驗 獲得超4個贊
首先,您需要修復循環索引。它應該從 到 ,否則如果最后一個或第一個字符是 .,則會出現索引超出邊界的異常。1s.length() - 1*
其次,如果兩邊至少有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");
}

TA貢獻1951條經驗 獲得超3個贊
您必須將循環從第 2 個字符限制到從末尾的第 2 個字符開始,并在找到匹配項時中斷(我想):
String ind = "DIFFERENT";
for (int i = 1; i < s.length() - 1; i++) {
if ((s.charAt(i) == '*') && (s.charAt(i-1)) == s.charAt(i+1)) {
ind = "SAME";
break;
}
}
System.out.print(ind);
同時刪除:
System.out.print("NO");
添加回答
舉報