2014-04-25 188 views
0

所以我正在做一些編程練習,我被困在這一個。這是一個簡單的搜索E的短語。我不明白爲什麼for無法循環,結果只是確認它沒有在我的短語中找到任何E。任何人都可以看到我的for循環有什麼問題嗎?For循環不循環,不能找出爲什麼

/* 
* Function that counts E's in a user-enter'd phrase 
**/ 
function countE() { 
    var phrase = prompt("Which phrase would you lke to examine ?"); 
    if(typeof(phrase) != "string") { 
    alert("That is not a valid entry!"); 
    return false; 
    } else { 
    for(var eCount = 0; eCount < phrase.length; eCount++) { 
     if(phrase.charAt(eCount) == 'E' || phrase.charAt(eCount) == 'e') { 
     alert("There are " + eCount + " E's in \"" + phrase + "\"."); 
     return true; 
     } else { 
     var report = confirm("I did not find any E's in your phrase. Would you like to try again?"); 
     if(report == true) { 
      return countE(); 
     } else { 
      alert("Ok maybe next time!"); 
      return false; 
     } 
     } 
    } 
    } 
} 

countE(); 

回答

2

無論發生什麼,您都會返回第一個字符。此外,您要報告字符串中的位置,而不是e的數量。

這應該讓你在正確的方向開始:

var eCount = 0; 
    for(var i = 0; i < phrase.length; i++) { 

     if(phrase.charAt(i) == 'E' || phrase.charAt(i) == 'e') { 

      eCount++; 

     } 
    } 

     if(eCount > 0) { 

      alert("There are " + eCount + " E's in \"" + phrase + "\"."); 
      return true; 

     } else { 
      var report = confirm("I did not find any E's in your phrase. Would you like to try again?"); 

      if(report == true) { 

       return countE(); 

      } else { 

       alert("Ok maybe next time!"); 

       return false; 
      } 
     } 

我刪除從循環(這是導致其停止)return語句,移動計數的報告,循環完成後。我還爲計數創建了一個單獨的變量,用循環的i替換eCount

+0

eCount狀況在for循環還需要更改爲我 – jing3142

+0

@ jing3142 - 謝謝 –

+0

return CountE()需要返回eCount – jing3142

-1

它只是檢查短語中的第一個字符。

0

你幾乎在那裏。

計數而是你剛纔顯示的第一指標的發現E.嘗試下面的代碼

function countE() { 

    var phrase = prompt("Which phrase would you lke to examine ?"); 

    if(typeof(phrase) != "string") { 

     alert("That is not a valid entry!"); 

     return false; 
    } else { 
     var realCountE = 0; 
     var efound = false; 
     for(var eCount = 0; eCount < phrase.length; eCount++) { 

      if(phrase.charAt(eCount) == 'E' || phrase.charAt(eCount) == 'e') { 
       realCountE++; 
      } 
     } 
     if (realCountE > 0) { 
      alert("There are " + realCountE + " E's in \"" + phrase + "\"."); 
     } 
     else { 
      var report = confirm("I did not find any E's in your phrase. Would you like to try again?"); 

      if(report == true) { 

       return countE(); 

      } else { 

       alert("Ok maybe next time!"); 

       return false; 
      } 
     } 


    } 
} 



countE(); 
+0

因此,如果第一個字符不是'e',它會提示用戶?這看起來不像他想要的。 –

+0

沒有代碼,你的代碼像我的工作:) –

+0

ups,請檢查更新。 http://jsfiddle.net/5qgY6/ –

0

僞你正在嘗試完成:

var count = 0 
for (var eCount 0 through phrase.length) 
    if(if(phrase.charAt(eCount) == 'E' || phrase.charAt(eCount) == 'e') 
     count = count + 1;  
if(count == 0) 
    print (COULD NOT FIND ANY E's); 
else 
    print (Found <count> no of E's); 
+0

這是什麼外來語言? :) –

+0

@lostandfownd我不知道JavaScript。但是我可以在代碼中看到問題。爲了創建足夠好的僞代碼,我顯然最終編寫了PseudoJScriptC++。其實質是你需要一個單獨的變量來存儲你的計數。一旦你檢查了字符串中的所有字符,只有這樣你才能評論E的存在和數量。 – Sinstein