Javascript 用于循环不循环和can';我不明白为什么

Javascript 用于循环不循环和can';我不明白为什么,javascript,loops,for-loop,Javascript,Loops,For Loop,所以我在做一些编程练习,我被困在这一个。只需在短语中搜索E。我不明白为什么for没有循环,结果只是确认它没有在我的短语中找到任何E。有人看到我的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

所以我在做一些编程练习,我被困在这一个。只需在短语中搜索
E
。我不明白为什么
for
没有循环,结果只是确认它没有在我的短语中找到任何
E
。有人看到我的
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();
/*
*计算用户输入短语中的E的函数
**/
函数计数(){
var phrase=prompt(“您想检查哪个短语?”);
如果(短语的类型)!=“字符串”){
警告(“这不是一个有效的条目!”);
返回false;
}否则{
for(var eCount=0;eCount
无论发生什么,您都将返回第一个字符。此外,您报告的是字符串中的位置,而不是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;
            }
        }
var eCount=0;
对于(var i=0;i0){
警报(“短语+”中有“+eCount+”E”);
返回true;
}否则{
var report=confirm(“我在你的短语中没有找到任何E。你想再试一次吗?”);
如果(报告==true){
返回计数();
}否则{
警惕(“好的,也许下次吧!”);
返回false;
}
}

我从循环中删除了
return
语句(导致循环停止),并将计数报告移动到循环完成后。我还为计数创建了一个单独的变量,将循环的
eCount
替换为
I

它只检查短语中的第一个字符

你差不多做到了

您只需显示第一个找到的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();
函数计数(){
var phrase=prompt(“您想检查哪个短语?”);
如果(短语的类型)!=“字符串”){
警告(“这不是一个有效的条目!”);
返回false;
}否则{
var realCountE=0;
var-efound=false;
for(var eCount=0;eCount0){
警报(“短语+”中有“+realCountE+”E”;
}
否则{
var report=confirm(“我在你的短语中没有找到任何E。你想再试一次吗?”);
如果(报告==true){
返回计数();
}否则{
警惕(“好的,也许下次吧!”);
返回false;
}
}
}
}
countE();

您试图实现的目标的伪代码:

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);
var计数=0
for(从0到短语.length的变量计数)
如果(如果(短语.charAt(ecoount)='E'| |短语.charAt(ecoount)='E')
计数=计数+1;
如果(计数=0)
打印(找不到任何E);
其他的
打印(未找到E);

for循环中的eCount in条件仍需要更改为ireturn CountE()需要返回Econtok以便tnx man您的代码可以工作,实际上可以工作。现在唯一的问题是它没有检查我是否键入短语。保留为空,它会说它没有找到E,它是有效的,但我想提醒他没有输入字符串。我会自己解决。如果第一个字符不是
E
it wi我会提示用户吗?这似乎不是他想要的。这是什么外来语言?:)@lostandfownd我不懂JavaScript。但我可以从你的代码中看出问题所在。为了创建足够好的伪代码,我显然最终编写了伪JScript++。本质上,您需要一个单独的变量来存储计数。检查完字符串中的所有字符后,才能对E的存在和计数进行注释。