c#循环直到Console.ReadLine ='y'或'n'

时间:2017-01-12 09:31:35

标签: c# loops while-loop console-application string-comparison

我是c#的新手,并且编写了一个简单的控制台应用程序作为练习。我希望应用程序提出一个问题,并且当用户输入等于'y'或'n'时,只进入下一段代码。这是我到目前为止所拥有的。

        static void Main(string[] args)
    {

        string userInput;
        do
        {
            Console.WriteLine("Type something: ");
            userInput = Console.ReadLine();
        }   while (string.IsNullOrEmpty(userInput));

        Console.WriteLine("You typed " + userInput);
        Console.ReadLine();

        string wantCount;
        do
        {
            Console.WriteLine("Do you want me to count the characters present? Yes (y) or No (n): ");
            wantCount = Console.ReadLine();
            string wantCountLower = wantCount.ToLower();
        }   while ((wantCountLower != 'y') || (wantCountLower != 'n'));


    }

我从string wantCount;起就遇到了麻烦。我想要做的是询问用户是否要计算字符串中的字符数,然后循环该问题,直到输入“y”或“n”(不带引号)。

请注意,我也想要满足输入的大写/小写,所以我想要将wantCount字符串转换为更低 - 我知道我现在如何使用它将无法正常工作,因为我正在设置{{1在循环内部,所以我不能在string wantCountLower子句中的循环之外引用。

你能帮我理解如何实现这个逻辑吗?

3 个答案:

答案 0 :(得分:2)

您可以将输入检查移动到循环内部并使用break退出。请注意,您使用的逻辑将始终评估为true,因此我已将此条件置之不理,并将char比较更改为string

string wantCount;
do
{
    Console.WriteLine("Do you want me to count the characters present? Yes (y) or No (n): ");
    wantCount = Console.ReadLine();
    var wantCountLower = wantCount?.ToLower();
    if ((wantCountLower == "y") || (wantCountLower == "n"))
        break;
} while (true);

还要注意?.之前的空条件运算符(ToLower())。如果没有输入任何内容,这将确保NullReferenceException不会被抛出。

答案 1 :(得分:0)

如果你想比较一个角色,那么ReadKey你不需要while ((wantCountLower != 'y') || (wantCountLower != 'n'));,你可以使用&&,如果条件是这样:||你的循环将是无限的一个,所以你可以在while(wantCount!= 'n')使用n代替char charYesOrNo; do { charYesOrNo = Console.ReadKey().KeyChar; // do your stuff here }while(char.ToLower(charYesOrNo) != 'n'); ,或者public class HelloThread extends Thread { public void run() { System.out.println("Hello from a thread!"); sendNotification(notification, memberId); } public static void main(String args[]) { (new HelloThread()).start(); } } ,这样它就会循环,直到你按下Runnable

run

答案 2 :(得分:-1)

yn 按回车处理工作

static void Main(string[] args)
{
    Console.Write("Do you see my text [y] yes, [n] no: ");
    string output = Console.ReadLine();

    switch (output)
    {
        case "y":
            // Do your stuff
            break;
        case "n":
            // Do your stuff
            break;
    }
}