+ 2
Can someone explain how I can use ReadLine to create a Yes or No answer with different if or else if responces in the WriteLine
Can someone explain how I can turn a Read.Line into a yes or no answer. I tried to use bool varibles and used the Convert.ToBoolen. but I can't get it to work even when my syntax seems fine. the answer true and false work, but bool happy; Console.Write("Are you happy?"); happy=Convert.ToBoolen(Console.ReadLine()); bool yes = true; bool no = false; if (happy == yes) { Console.WriteLine("You are happy");} else if (happy == no) {Console.WriteLine("You are sad");} else {Console.WriteLine("yes or no only");} .
4 ответов
+ 2
to read a line use:
string answer = Console.ReadLine();
To test for Yes use:
if (answer == "yes")
the same with "no".
To make it more robust use:
if (answer.Trim().ToLower() == "yes")
Trim removes spaces from start and end of string, ToLower makes string lowercase, so even if you enter " Yes" it will still work.
Try something like this.
............
Console.WriteLine("Are you happy (Yes/No)?");
string answer = Console.ReadLine().Trim().ToLower();
if (answer == "yes") {
Console.WriteLine("Happy");
} else if (answer == "no") {
Console.WriteLine("Sad");
} else {
Console.WriteLine("Yes/No please.");
}
.............
And for future, "bool yes = true" and then testing if (happy == yes) is redundant.
Shorter way:
if (happy) { Console.WriteLine("I'm happy"); }
else ...
or you could test like this:
if (!happy) { Console.WriteLine("I'm not happy"); } else ...
+ 2
@Ugnius Soraka. Thank you very much. Totally solved my issue. And thank you for the Trim and Lower. Awesome.
+ 1
I tried the char keyword and it didn't work for me. I was able to use the switch conditional like char using 1 for yes and 2 for no.
Console.WriteLine("Are you happy, 1 for yes, 2 for no");
int happy = Convert.ToInt32(Console.Readline());
switch (happy) {
case 1:
Console.WriteLine("Happy");
break;
case 2:
Console.WriteLine("Sad");
break;
default:
Console.WriteLine("1 for yes or 2 for no only);
break;