2 回答
TA贡献1780条经验 获得超3个赞
首先,您需要修复循环索引。它应该从 到 ,否则如果最后一个或第一个字符是 .,则会出现索引超出边界的异常。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");
添加回答
举报