根据用户选择确定输出

发布于 2024-09-18 12:11:36 字数 1299 浏览 2 评论 0原文

如果用户输入 A,它可以工作,然后他们输入 B,它可以工作,如果他们输入 E,它也可以工作,但如果他们然后输入 A 重新开始,程序将关闭。

常量双COMMRATE = 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 the user enters A it works then they enter B it works and it works if they enter E it also works but if they then enter A to start over the program closes.

const double COMMRATE = 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());
       }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

扎心 2024-09-25 12:11:36

因为您的代码仅针对每种响应类型循环。
它在响应为 A 时进行迭代,然后是 while B,然后是 while 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")

Because your code only loops per response type.
It iterates while the response is A, then while B, then while E. Meaning that it can only operate in that sequence

Maybe you should look at something like:

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")
心清如水 2024-09-25 12:11:36

这与您的其他问题的情况相同: Do 循环和 while 循环

您将想要使用 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());
}

另外,您在范围内声明字符串 salesStr你的while(或者在我的例子中,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());

This is the same situation as your other question: Do loops and while loops

You'll want to use an if statement or a switch statement to parse the user's input:

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());
}

Also, you're declaring the string salesStr inside the scope of your while (or in my example, the if). You won't be able to access it anywhere else. Since you're repeating the same logic in each block, but with a different value, I would be inclined to move the repeating code outside it, and only put it in there once. This way you only need to change one place in the future if the requirements change:

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());

Since each of these if statements is doing the same thing, you can combine them too:

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());
违心° 2024-09-25 12:11:36

查看程序的运行顺序:首先检查 As,然后检查 Bs,然后检查 Es,最后退出。

看起来您还没有对销售人员的 ID 做任何重要的事情,尽管我认为您稍后会做。

您需要一个大循环,而不是三个单独的循环,只要响应不是 Z,该循环就会继续,然后在内部使用一组 if(...) 语句,甚至可能是 < code>switch 语句,决定如何处理销售人员的 ID。

Look at the order your program flows in: first, it checks for As, and then it checks for Bs, and then Es, and then it exits.

It looks like you're not doing anything important with the ID of the salesperson yet, although I assume you will later.

Instead of three separate loops, you need one big loop that continues as long as the response isn't Z, and then uses a set of if(...) statements internally, or perhaps even a switch statement, to decide what to do with the ID of the salesperson.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文