Java While循环检查重复字符
好的,我有了如何检查重复项的概念,因为我正在做一个项目,其中包括不将多个值推送到堆栈上。到目前为止,我的代码是标准的,将扫描器保存到字符串,将字符串保存到数组,然后执行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.
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。