好的,所以我有了如何检查重复项的概念,因为我正在做一个项目,其中包括不将多个值推送到堆栈上。到目前为止,我的代码是标准的,将扫描仪保存到字符串,将字符串保存到数组,然后这个 while 循环。
int c=0;
while(counter < inAr.length)
{
String w1 = inAr[c];
String w2 = inAr[c + 1];
if(w1 != w2)
{
counter++;
so.push(inAr[c]);
c++;
temp++;
}
else
{
counter++;
c++;
}
}
好的,现在开始解决问题了。我得到了 inAr[c + 1] 的 arrayindexoutofbounds,但我没有得到的是 inAr[1]、inAr[2] 等所有保留值。如果我将 [c + 1] 替换为像 [1] 这样的常量,程序就可以正常运行......我在这一点上很迷失,任何人都可以提供一些帮助
最佳答案
考虑 c = inAr.length-1
时的情况。
此时,我们将进入 while 循环(因为 c
和 counter
在每次迭代时具有相同的值,假设初始化为 0)
inAr[c+1]
真是inAr[inAr.length]
这总是超出范围的。
修复:将循环更改为 while(counter < inAr.length - 1)
或将计数器初始化为 1。
编辑:您也不应该将字符串与 ==
进行比较或!=
。你的 if 语句应该是:
if(!w1.equals(w2))
但这与实际问题无关,只是可能会在以后引起问题。
关于java - While 循环检查重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19125189/