C# 根据用户的选择确定输出

C# 根据用户的选择确定输出,c#,loops,C#,Loops,如果用户输入A,则输入B,即有效;如果输入E,则有效;如果输入A,则重新开始,则程序关闭 常数双逗号=0.10 const double COMMRATE = 0.10; string inputstring; char response; Console.Write("Do you want to Calculate Sales A or B or E..."); inputstring = Console.ReadLine(); response = Convert.ToCha

如果用户输入A,则输入B,即有效;如果输入E,则有效;如果输入A,则重新开始,则程序关闭

常数双逗号=0.10

const double COMMRATE = 0.10; 

string inputstring; 

char response; 
Console.Write("Do you want to Calculate Sales A or B or E..."); 
inputstring = Console.ReadLine(); 
response = Convert.ToChar(inputstring);

    while (response == 'A')
     {
    Console.WriteLine("Enter amount of sales");
    string salesStr = Console.ReadLine();
    Console.WriteLine(Double.Parse(salesStr) * COMMRATE);
    Console.WriteLine("Enter sales member to continue or Z to exit");
    response = Convert.ToChar(Console.ReadLine());
     }
    while (response == 'B')
    {
        Console.WriteLine("Enter amount of sales");
        string salesStr = Console.ReadLine();
        Console.WriteLine(Double.Parse(salesStr) * COMMRATE);
        Console.WriteLine("Enter sales member to continue or Z to exit");
        response = Convert.ToChar(Console.ReadLine());
    }
    while (response == 'E')
     {
         Console.WriteLine("Enter amount of sales");
    string salesStr = Console.ReadLine();
    Console.WriteLine(Double.Parse(salesStr) * COMMRATE);
    Console.WriteLine("Enter sales member to continue or Z to exit");
    response = Convert.ToChar(Console.ReadLine());
       }

这与您的另一个问题的情况相同:

您需要使用
if
语句或
switch
语句来解析用户的输入:

if (response == 'A')
{
    Console.WriteLine("Enter amount of sales");
    string salesStr = Console.ReadLine();
    Console.WriteLine(Double.Parse(salesStr) * COMMRATE);
    Console.WriteLine("Enter sales member to continue or Z to exit");
    response = Convert.ToChar(Console.ReadLine());
}

if (response == 'B')
{
    Console.WriteLine("Enter amount of sales");
    string salesStr = Console.ReadLine();
    Console.WriteLine(Double.Parse(salesStr) * COMMRATE);
    Console.WriteLine("Enter sales member to continue or Z to exit");
    response = Convert.ToChar(Console.ReadLine());
}

if (response == 'E')
{
    Console.WriteLine("Enter amount of sales");
    string salesStr = Console.ReadLine();
    Console.WriteLine(Double.Parse(salesStr) * COMMRATE);
    Console.WriteLine("Enter sales member to continue or Z to exit");
    response = Convert.ToChar(Console.ReadLine());
}
另外,您在
while
的范围内声明字符串
salesStr
(在我的示例中,是
if
)。您将无法在其他任何地方访问它。由于您在每个块中重复相同的逻辑,但使用不同的值,因此我倾向于将重复代码移到块外,并且只将其放在块中一次。这样,如果需求发生变化,您只需在将来更改一个位置:

string salesStr;

if (response == 'A')
{
    Console.WriteLine("Enter amount of sales");
    salesStr = Console.ReadLine();
}

if (response == 'B')
{
    Console.WriteLine("Enter amount of sales");
    salesStr = Console.ReadLine();
}

if (response == 'E')
{
    Console.WriteLine("Enter amount of sales");
    salesStr = Console.ReadLine();
}

Console.WriteLine(Double.Parse(salesStr) * COMMRATE);
Console.WriteLine("Enter sales member to continue or Z to exit");
response = Convert.ToChar(Console.ReadLine());
由于这些
if
语句中的每一条都在做相同的事情,因此您也可以将它们组合起来:

string salesStr;

if (response == 'A' || response == 'B' || response == 'E')
{
    Console.WriteLine("Enter amount of sales");
    salesStr = Console.ReadLine();
}

Console.WriteLine(Double.Parse(salesStr) * COMMRATE);
Console.WriteLine("Enter sales member to continue or Z to exit");
response = Convert.ToChar(Console.ReadLine());

看看你的程序流入的顺序:首先,它检查As,然后检查Bs,然后是Es,然后退出

看起来你对销售人员的身份还没有做任何重要的事情,尽管我想你以后会做的


与三个单独的循环不同,您需要一个大循环,只要响应不是Z,它就可以继续,然后在内部使用一组
if(…)
语句,或者甚至是
switch
语句,来决定如何处理销售人员的ID。

,因为您的代码只对每个响应类型进行循环。 它在响应为A、B、E时迭代。这意味着它只能按该顺序操作

也许你应该看看这样的东西:

do
{
    Console.WriteLine("EnterNextCommand");
    inputstring = Console.ReadLine();
    response = Convert.ToChar(inputstring);
    switch (response)
    {
        case 'A':
        case 'a':
        //case A logic
        break;
        case 'B':
        case 'b':
        //case B logic
        break;
        //etc.
        default:
        //they enter something you're not handling
        break;
    }

}
while (inputstring != "Z")

我也有同样的问题。我可以从A开始,然后转到B,再转到E,但当我再次尝试点击A时,程序关闭。@randywhite30-查看上面Val的答案,它包含了一个循环,以保持程序运行,直到您点击Z.+1以获取所包含的教案@randy你不是在循环你的程序,你是在使用循环,比如if语句。