C# 根据用户的选择确定输出
如果用户输入A,则输入B,即有效;如果输入E,则有效;如果输入A,则重新开始,则程序关闭 常数双逗号=0.10C# 根据用户的选择确定输出,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
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语句。