繁体   English   中英

这个For循环有什么问题?

[英]What's wrong with this 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;

}

我可以看到几个错误:

for循环末尾的分号 去掉它。

下一个

sequence >= length

应该

sequence <= length

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

应该

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

并且您已经在更改sequence时完全需要更改length

这样我们得到:

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

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

sequence >= length大声说为“ sequence大于或等于length 初始化为零。 什么时候大于或等于length

除了其他人指出的错误之外,这里还有违反约定的情况。 您将长度计算为n-1,然后比较<=(好吧,> =,但应为<=)。 通常,除非有很好的理由,否则我们的for循环如下所示:

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

就您而言,这表示为:

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

除非有充分的理由使用另一个变量,否则通常也将“ i”作为循环变量。 在您的情况下,“顺序”只是令人困惑。

首要问题:

更改

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM