[英]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.