Home > Mobile >  I had to use a for loop to to go through each character in a string but the code is not working prop
I had to use a for loop to to go through each character in a string but the code is not working prop

Time:03-21

These are the instruction for the exercise I am supposed to do: Start with a prompt that asks the user to enter any string.

Using a for loop, go through each character in the string.

If the string contains the letter A (capital or lowercase), break out of the loop and print the message below to the screen.

If the string does not contain the letter A, print the message below to the screen.

Here is my code

var text= prompt("Enter any string.")
for (var i = 0; i < text.length; i  ) {
    if (text[i] === "A")
    {alert("The string contains the letter A.");
}
     if (text[i] === "a")
    {alert("The string contains the letter A.");
}
 else
      {alert("The string does not contain the letter A.");
}
}

CodePudding user response:

You are alerting every iteration of the loop, meaning that you're calling 'alert' for each letter.

What you likely want to do is make a variable like

var doesContainA = false;

Then in your loop, if it equals a or A, change doesContainA to true;

At the end, do one final if statement which controls which message to alert, based on if that variable became true or is still false

Also, formatters can help you read code easier by lining everything up, something like this

CodePudding user response:

Use a separate function that returns a boolean result. This method lets you stop the iteration after first occurrence of desired letters:

function hasLetter(text) {
    var char;
    for (var i = 0; i < text.length; i  ) {
        char = text[i];
        if (char === "A" || char === "a") {
            return true;
        }
    }

    return false;
}

var text = prompt("Enter any string.");

if (hasLetter(text)) {
    alert("The string contains the letter A.");
} else {
    alert("The string does not contain the letter A.");
}

You can also use function String.toLowerCase and check whether the char matches lowercase letter 'a':

char = text[i].toLowerCase();
if (char === "a") {
    return true;
}

CodePudding user response:

You can use includes method instead of a for loop.

  const str = "Anything";
  if (str.includes("A")) {
    console.log("contains A");
  } else if (str.includes("a")) {
    console.log("contains a");
  } else {
    console.log("do something...");
  }

CodePudding user response:

Why do you need loop to do so, you can do it by this

if(text.includes('A')){
    alert("The string contains the letter A.");
}else if(text.includes('a')){
    alert("The string contains the letter a.");
}else{
    alert("The string does not contain the letter A.");
}

UPDATE

var text= prompt("Enter any string.")
var letterA = false;
var lettera = false
for (var i = 0; i < text.length; i  ) {
    if (text[i] === "A")
    {
        letterA = true;
    }
    if (text[i] === "a")
    {
        lettera = true
    }
}
if(letterA=== true){
    alert('string contains letter A');
}else if(lettera ===true){
    alert('string contains letter a');
}else{
     alert(' string does not contain a or A character');
}
  • Related