簡體   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