while循环检查重复的字符

时间:2013-10-01 20:21:59

标签: java arrays indexoutofboundsexception

好的,所以我有关于如何检查重复项的概念,因为我正在做一个包含不将多个值推送到堆栈的项目。到目前为止,我的代码是标准的,将扫描器保存到字符串,将字符串保存到数组,然后这个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],等等所有保持值。如果我用[1]之类的常量替换[c + 1],程序就可以正常运行....我此时已经迷失了,有人可以提供一些帮助吗

3 个答案:

答案 0 :(得分:3)

考虑c = inAr.length-1时的情况。

此时我们将进入你的while循环(因为ccounter在每次迭代时具有相同的值,假设初始化为0)

inAr[c+1]真的是inAr[inAr.length],它总是超出界限。

FIX:将循环更改为while(counter < inAr.length - 1)或将计数器初始化为1。

编辑:你也不应该将字符串与==!=进行比较。你的if语句应该是:

if(!w1.equals(w2))

但这与实际问题无关,可能会在以后引起问题。

答案 1 :(得分:0)

这意味着您正在尝试从数组中访问元素,例如。数组长度为10,您尝试访问索引11

答案 2 :(得分:0)

你的代码在循环开始时没有中断,而是在循环结束时。

选中条件后,

c始终等于counter,最终counter将等于inArr.length - 1. c + 1将相等到inArr.length

由于数组始终从索引0开始(而不是1),因此当您执行

之类的操作时,总是会出现异常
mystr = inAr[inArr.length]

您在while循环的最后一次迭代期间实际执行的操作。