Определение того, сколько раз в предложении появляется буква «х», используя цикл, разрыв и продолжение - PullRequest
0 голосов
/ 25 мая 2019

Я просто возвращаю себя в JAVASCRIPT после того, как не кодировал в течение нескольких лет и пытаюсь освежить память о том, как использовать цикл «FOR», «BREAK», «CONTINUE».

Я пытаюсь найти, сколько раз в предложении появляется конкретная буква, и console.log, так что в основном

1. Я создал новую переменную " mywords ", которая содержит мое предложение

var mywords="this is the for loop wiTh break and continue.".toLowerCase();    

2. , чем переменная " myletter ", чем содержащая значение какой буквы искать

var myletter ='t';    

3. и переменная " howmanytime" , которая подсчитывает, сколько раз буква появляется в предложении

var howmanytime = 0;

4. далее я создал цикл for, который считает длину предложения, продолжает цикл и добавляет + 1 к « howmanytime », используя i ++ до i равно длине предложения

for (var i=0; i <= mywords.length;i++){
if (mywords[i]===myletter){
    howmanytime ++;
}    

* теперь howmanytime со значением 4, и я знаю, что буква t появляется в предложении 4 раза

5. далее я создал оператор if внутри цикла for, который проверяет, появляется ли письмо более 4 раз или меньше, если оно появляется более 4 раз, отображает в console.log номер, на котором написано письмо. появляется в предложении + "больше 3" и если это так, чем break цикл в случае, если он меньше 4, отображается только "меньше 3"

if (howmanytime >= 4) {
console.log('more than 3');
console.log('the letter ' + myletter.toUpperCase() + ' appearing ' + howmanytime + ' times in the senetnce');    
break;    

}else if (howmanytime <=4 ){    

console.log('less than 3');
continue;
 }    

теперь проблема: Я не могу понять, почему, когда буква меньше 4 раз, например, «е», она отображается в логе консоли "меньше 3 раз" без всякого другого текста, что я хочу

enter image description here

но когда это больше чем 4 раза, давайте вернемся к букве "t", это отображает «больше 3» и «меньше 3»

enter image description here

почему появляется и «меньше 3»?

Мой полный код

var mywords = "this is the for loop wiTh break and continue.".toLowerCase();

var howmanytime = 0;
var myletter = 'e';

for (var i = 0; i <= mywords.length; i++) {
  if (mywords[i] === myletter) {
    howmanytime++;
  }

  if (howmanytime >= 4) {
    console.log('more than 3');
    console.log('the letter ' + myletter.toUpperCase() + ' appearing ' + howmanytime + ' times in the senetnce');
    break;
  } else if (howmanytime <= 4) {
    console.log('less than 3');
    continue;
  }
}

Ответы [ 4 ]

1 голос
/ 25 мая 2019

Вы можете поменять местами условия и пропустить деталь else, используя continue для первой части и разрыв для второго условия.

var mywords = "this is the for loop wiTh break and continueeee.".toLowerCase(),
    howmanytime = 0,
    myletter = 'e',
    i;

for (i = 0; i < mywords.length; i++) { // go only until smaller length,
    if (mywords[i] === myletter) {     // the last is length - 1
        howmanytime++;
        if (howmanytime < 3) {
            console.log('less than 3');
            continue;
        }
        if (howmanytime >= 4) {
            console.log('more than 3');
            console.log('the letter ' + myletter.toUpperCase() + ' appearing ' + howmanytime + ' times in the sentence');
            break;
        } 
    }
}
1 голос
/ 25 мая 2019

Я не могу понять, почему, когда буква меньше 4 раз, например "e", она отображается в журнале консоли "less than 3 times" без какого-либо другого текста, который я хочу

Потому что другой текст, который вы отображаете внутри блока if if (howmanytime >= 4). Для письма "e" оно никогда не становится истинным, поэтому другой текст не регистрируется.

но когда оно более 4 раз, давайте вернемся к букве "t", где отображается «больше 3» и "less than 3", почему появляется "less than 3"?

Поскольку изначально howmanytime равен 0, он продолжает увеличиваться, так как в строке появляется буква "t". Это не 4 или больше, чем 4 в начале цикла.

Если вы хотите отобразить все в конце, просто переместите, если операторы вне тела цикла.

var mywords = "this is the for loop wiTh break and continue.".toLowerCase();

var howmanytime = 0;
var myletter = 'e';

for (var i = 0; i <= mywords.length; i++) {
  if (mywords[i] === myletter) {
    howmanytime++;
    if(howmanytime >= 4) break;
  }  
}

if (howmanytime >= 4) {
    console.log('more than 3');
  }
  
else if (howmanytime <= 4) {
    console.log('less than 3');
  }
console.log('the letter ' + myletter.toUpperCase() + ' appearing ' + howmanytime + ' times in the senetnce');
0 голосов
/ 25 мая 2019

howmanytime >= 4 будет true для набора [4,5,6,7,8,9...]

howmanytime <= 4 будет true для набора [4,3,2,1,0,-1...]

Если вы хотите узнать, является ли howmanytime хотя бы 3, вам нужно сделать howmanytime >= 3, а else должно быть howmanytime < 3

Пожалуйста, проверьте интерактивный пример ниже:

function checkLetter(mywords, myletter) {
  var howmanytime = 0;
  for (var i = 0; i <= mywords.length; i++) {
    if (mywords[i] === myletter) {
      howmanytime++;
    }

    if (howmanytime >= 3) {
      break;
    } else if (howmanytime < 3) {
      continue;
    }
  }

  if (howmanytime >= 3) {
    console.log('more than 3');
    console.log('the letter ' + myletter.toUpperCase() + ' appearing ' + howmanytime + ' times in the senetnce');
  } else {
    console.log('less than 3');
  }
}

var mywords = "this is the for loop wiTh break and continue.".toLowerCase();

document.querySelectorAll("button").forEach(function(dom) {
  dom.addEventListener("click", function() {
    console.clear();
    checkLetter(mywords, dom.getAttribute("letter"));
  });
});
<button letter="a">Check 'A'</button>
<button letter="e">Check 'E'</button>
<button letter="t">Check 'T'</button>

Некоторые заметки:

  • Соглашение об именах для JavaScript: camel-case, что означает, что вы должны называть переменную как myWords вместо mywords.
  • Часть else if (howmanytime < 3) не нужна. Простой else сделал бы ту же задачу в этом случае.
0 голосов
/ 25 мая 2019

Вот немного более полезная версия кода, которая указывает, что происходит

var mywords = "this is the for loop wiTh break and continue.".toLowerCase();

var howmanytime = 0;
var myletter = 't';

for (var i = 0; i <= mywords.length; i++) {
  if (mywords[i] === myletter) {
    howmanytime++;
    console.log('Found ' + howmanytime + ' times the letter ' + myletter);
  }

  if (howmanytime >= 4) {
    console.log('more than 3');
    console.log('the letter ' + myletter.toUpperCase() + ' appearing ' + howmanytime + ' times in the sentence');
    break;
  }
}

/* NOTE! Outside of the loop */
if (howmanytime < 4) {
    console.log('less than 3');
}
...