这个For循环有什么问题?

时间:2010-09-26 15:03:14

标签: java for-loop

我无法让这个程序计算空间,我觉得循环中存在逻辑错误,但我太缺乏经验,无法自己解决。有什么提示吗?

System.out.print("Enter a string: ");
String myString = keyboard.next();
int numBlanks = 0;

//find string length
int length = myString.length() - 1;
System.out.println("length " + length);

for(int sequence = 0; sequence >= length; ++sequence);
{

    if(myString.charAt(length)==' ')
    {
        numBlanks += 1;
        length -= length;
    }
    else 
        length -= length;

}

4 个答案:

答案 0 :(得分:9)

我可以看到很少的错误:

for循环结束时的分号。删除它。

下一步

sequence >= length

应该是

sequence <= length

if(myString.charAt(length)==' ')

应该是

if(myString.charAt(sequence)==' ')

,您需要更改length,因为您已经在更改sequence

所以我们得到:

for(int sequence = 0; sequence <= length; ++sequence) {

    if(myString.charAt(sequence)==' ') {
        numBlanks += 1;
    }
}

答案 1 :(得分:3)

大声说出

sequence >= length,因为“sequence大于或等于length。”它被初始化为零。什么时候它会大于或等于length

答案 2 :(得分:1)

除了其他人指出的错误外,这里还有违反惯例的行为;你将长度计算为n - 1,然后比较&lt; =(嗯,&gt; =,但应该是&lt; =)。通常,除非有很好的理由,否则我们的for循环看起来像这样:

for (int i = 0; i < n; i++) {
    ...
}

在您的情况下,这将表示为:

for (int i = 0; i < myString.length(); i++) {
    ...
}

除非有充分的理由使用另一个,否则坚持使用“i”作为循环变量也是常规的;在你的情况下,“序列”只是令人困惑。

答案 3 :(得分:0)

第一期:

更改

for(int sequence = 0; sequence >= length; ++sequence);

for(int sequence = 0; sequence <= length; ++sequence);  //flipped >= to <=

第二期:

变化

I am too inexperienced to figure it out myself.

This will be some good practice for debugging.  //int confidence should never be negative

:d