Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java While循环检查重复字符_Java_Arrays_Indexoutofboundsexception - Fatal编程技术网

Java While循环检查重复字符

Java While循环检查重复字符,java,arrays,indexoutofboundsexception,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.

好的,我有了如何检查重复项的概念,因为我正在做一个项目,其中包括不将多个值推送到堆栈上。到目前为止,我的代码是标准的,将扫描器保存到字符串,将字符串保存到数组,然后执行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++;
     }
  }
intc=0;
while(计数器<内部长度)
{
字符串w1=inAr[c];
字符串w2=inAr[c+1];
如果(w1!=w2)
{
计数器++;
so.push(inAr[c]);
C++;
temp++;
}
其他的
{
计数器++;
C++;
}
}

好的,那就谈谈这个问题。我得到了inAr[c+1]的arrayindexoutofbounds,但我没有得到的是inAr[1],inAr[2]等等所有的保留值。如果我将[c+1]替换为像[1]这样的常数,程序运行良好,并且可以工作。。。。我在这一点上迷失了方向,有人能提供一些帮助吗请考虑一下当
c=inAr.length-1
时的情况

此时,我们将进入while循环(假设初始化为0,则
c
计数器在每次迭代时具有相同的值)

inAr[c+1]
实际上是
inAr[inAr.length]
这总是超出范围

修复:将循环更改为
while(计数器
或将计数器初始化为1

编辑:您也不应该将字符串与
==
进行比较=。您的if声明应为:

if(!w1.equals(w2))

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

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

此时,我们将进入while循环(假设初始化为0,则
c
计数器在每次迭代时具有相同的值)

inAr[c+1]
实际上是
inAr[inAr.length]
这总是超出范围

修复:将循环更改为
while(计数器
或将计数器初始化为1

编辑:您也不应该将字符串与
==
进行比较=。您的if声明应为:

if(!w1.equals(w2))

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

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

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

您的代码在循环开始时没有中断,而是循环的终点

检查条件时,
c
始终等于
计数器
,最终,
计数器
将等于
初始长度
-1。而
c+1
将等于
inar.length

由于数组总是从索引
0
(而不是
1
)开始,因此在执行以下操作时总会出现异常

mystr = inAr[inArr.length]

循环的最后一次迭代期间,您正在有效地执行该操作。

您的代码不是在循环开始时中断的,而是在循环结束时中断的

检查条件时,
c
始终等于
计数器
,最终,
计数器
将等于
初始长度
-1。而
c+1
将等于
inar.length

由于数组总是从索引
0
(而不是
1
)开始,因此在执行以下操作时总会出现异常

mystr = inAr[inArr.length]

while
循环的最后一次迭代中,您正在有效地执行该操作。

您认为
数组索引OutofBoundsException
是什么意思?计数器初始化用什么?为什么要谈论“重复字符”但是比较
String
references?你认为
ArrayIndexOutOfBoundsException
是什么意思?计数器是用什么初始化的?为什么你说的是“重复字符”,而比较
String
references?甚至尝试访问索引10(这对于初学者来说是一个常见的困惑),因为长度为10的数组的索引为0-9,甚至尝试访问索引10(这对于初学者来说是一个常见的困惑),因为长度为10的数组的索引为0-9。