java - While 循环检查重复字符

标签 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] 等所有保留值。如果我将 [c + 1] 替换为像 [1] 这样的常量,程序就可以正常运行......我在这一点上很迷失,任何人都可以提供一些帮助

最佳答案

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

此时,我们将进入 while 循环(因为 ccounter 在每次迭代时具有相同的值,假设初始化为 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/

相关文章:

java - 如何从 Java 创建 ScalaZ 析取?

java - hazelcast dataSerialized - 序列化对象数组

javascript - 匹配返回 100 而不是实际值

java - 为什么会发生此 ArrayIndexOutOfBounds 异常?

java - 我的 android 应用程序在模拟器中崩溃

java - java ant中的点符号

java - 如何在 Hibernate createSQLQuery() 中传递多个参数?

javascript - 我如何替换状态(数组)ReactJs

indexoutofboundsexception - Liquibase 中的 liquibase.exception.DatabaseException

java - 将数字分隔为 2 个数组 Java