Java 为什么j(for)循环在这里不起作用?

Java 为什么j(for)循环在这里不起作用?,java,Java,如果我写 if(y.charAt(i)==y.charAt(i+1)) 那么deleteCharAt有效,但如果我拿j.I.e if(y.charAt(i)==y.charAt(j)) 那就不行了为什么 试试看: 首先,永远不要捕捉并忽略异常。或者处理它,重新旋转它,或者包裹它。如果您认为它不应该发生,只需将其包装在RuntimeException中 您的代码中引发了一个异常,因此您没有看到该异常。 for循环中的两个检查错误 i <= r.length() j <= r.le

如果我写

if(y.charAt(i)==y.charAt(i+1))
那么deleteCharAt有效,但如果我拿j.I.e

 if(y.charAt(i)==y.charAt(j))
那就不行了为什么

试试看:


首先,永远不要捕捉并忽略异常。或者处理它,重新旋转它,或者包裹它。如果您认为它不应该发生,只需将其包装在RuntimeException中

您的代码中引发了一个异常,因此您没有看到该异常。 for循环中的两个检查错误

i <= r.length()
j <= r.length()
应该是

i < y.length()
j < y.length()
这是因为length永远不是有效的索引length-1是最后一个有效的索引,并且因为y可以比r短,因为可以删除某些内容


最后,您可能想知道要删除哪个字符,删除该字符的原因,以及删除后所有字符的索引如何移动。

这应该做什么?输入输出?看起来很简单,试着用纸和铅笔来理解代码中有语法错误。第二个for循环没有{},这在Java中不是语法错误。如果说y.deleteCharAt5,y.charAt10会怎么样?考虑一下……好吧,但是对于输入:密西西比,我的输出是:missp而不是misp。我假设您现在正在调用y.deleteCharAtj来获取该输出。删除索引中的字符后,新字符将移到该索引中。您想继续下一个索引,还是需要返回并再次检查相同的索引?检查相同的索引。如果每次循环时j都在递增,您需要对它做什么才能再次检查相同的索引?在循环内递减1。谢谢
i <= r.length()
j <= r.length()
i < y.length()
j < y.length()