似乎不能循环switch语句

本文关键字:switch 语句 循环 不能 | 更新日期: 2023-09-27 18:10:58

我要做的是,在这个人输入他们的名字之后,问他们是否想再做一次,如果不想,点击n,然后退出程序。但我似乎不能让它工作。我试过添加一个退出案例,仍然没有。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestApp
{
    class Program
{
    static void Main()
    {
        Console.Write("Please enter your name: ");
        string name = Console.ReadLine();
        Test(name.ToLower());
        Console.ReadLine();
    }
    static void Test(string name)
    {
        bool exit = true;
        string answer = "";
        do
        {
            switch (name)
            {
                case "name":
                    Console.WriteLine("Hello Name");
                    break;
                case "name2":
                    Console.WriteLine("Hello Name2");
                    break;
            }
            Console.WriteLine("Would you like to enter a new name? y/n: ");
            if (answer == "y")
                exit = false;
            else
                exit = true;
        }
        while (exit == false);
    }
}
}

似乎不能循环switch语句

您没有更改循环中的'answer'变量。您缺少一个Console.ReadLine() in循环。

 Console.Write("Would you like to enter a new name? y/n: ");
 answer = Console.ReadLine(); <----------- this was missing
 exit = (answer == "y" || answer == "Y"); <------- this slight improvement

还应该在循环中读取名称,因为当exit为false时,您希望再次读取它。现在你一遍又一遍地检查同一个名字。

static void Test() <---- remove the name parameter
{
    bool exit = true;
    string answer = "";
    do
    {
      Console.Write("Please enter your name: ");
      string name = Console.ReadLine().ToLower();     <--- read name here

answer = Console.ReadLine();//你的代码中缺少了这一行

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestApp
{
    class Program
{
    static void Main()
    {
        Console.Write("Please enter your name: ");
        string name = Console.ReadLine();
        Test(name.ToLower());
        Console.ReadLine();
    }
    static void Test(string name)
    {
        bool exit = true;
        string answer = "";
        do
        {
            switch (name)
            {
                case "name":
                    Console.WriteLine("Hello Name");
                    break;
                case "name2":
                    Console.WriteLine("Hello Name2");
                    break;
            }
            Console.WriteLine("Would you like to enter a new name? y/n: ");
            answer = Console.ReadLine();   // you're missing this line in your code.
            if (answer == "y")
                exit = false;
            else
                exit = true;
        }
        while (exit == false);
    }
}

}

结合Hasan和Harsh的观点,这里有一个工作示例,似乎可以满足您的期望。

static void Test()
{
    bool exit = true;
    string answer = "";
    do
    {
        Console.Write("Please enter your name: ");
        string name = Console.ReadLine();
        switch (name)
        {
            case "name":
                Console.WriteLine("Hello Name");
                break;
            case "name2":
                Console.WriteLine("Hello Name2");
                break;
        }
        Console.WriteLine("Would you like to enter a new name? y/n: ");
        answer = Console.ReadLine();
        if (answer == "y")
            exit = false;
        else
            exit = true;
    }
    while (!exit);
}

当然,如果您输入的名称不是"name1"或"name2",那么事情就开始变得奇怪了,因为您还没有真正定义在这种情况下想要发生什么。但是希望这能给你一个好的开始。