如果我写
if(y.charAt(i)==y.charAt(i+1))
然后deleteCharAt()
可以工作,但是如果我拿一个j,即
if(y.charAt(i)==y.charAt(j))
然后它不起作用?
Scanner s = new Scanner(System.in);
int t = s.nextInt();
t++;
while (t-- > 0) {
String r = s.next();
StringBuffer y = new StringBuffer(r);
try {
for (int i = 0; i <= r.length(); i++) {
for (int j = i + 1; j <= r.length(); j++)
if (y.charAt(i) == y.charAt(j)) {
y.deleteCharAt(i);
}
}
} catch (Exception e) {
}
System.out.println(y);
}
答案 0 :(得分:2)
首先,永远不要捕捉并忽略异常。处理它,重新抛出或包裹它。如果您认为不应该发生这种情况,请将其包装在RuntimeException
。
} catch(Exception e) {
throw new RuntimeException(e);
}
您的代码中抛出了一个异常,因此您没有看到。 for循环中的两个检查是错误的。
i <= r.length()
j <= r.length()
应该是
i < y.length()
j < y.length()
这是因为length()
永远不是有效索引(length() - 1
是最后一个有效索引),因为y
可能比r
短,因为事情可能是除去。
最后,您可能想要考虑删除哪个字符,删除该字符的原因,以及删除后所有字符的索引如何移动。