完成计算后保持循环
问题描述:
static void Main(string[] args)
{
double a, b, c, Result;
while (true) // and is good idea to use while to keep backing to main ??
{
Console.WriteLine("\t\t\t\t\t\t\tCalcualtor");
Console.WriteLine("\t\t\t\t\t\t\t----------");
Console.WriteLine("put Number Plz");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("put other Number Plz");
b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Choose :*,+,-,/");
string uservalue = Console.ReadLine();
if (uservalue == "*")
{
Result = a * b;
Console.Write("Resultat= " + a * b);
}
else if (uservalue == "+")
{
Result = a + b;
Console.Write("Resultat= " + (a + b));
}
else if (uservalue == "-")
{
Result = a - b;
Console.Write("Resultat= " + (a - b));
}
else if (uservalue == "/")
{
Result = a/b;
Console.Write("Resultat= " + (a/b));
}
else
Console.WriteLine("put right operator !!!");
//我需要在这里开始我已经做过的所有事情意味着循环即时仍然新与C#任何建议?完成计算后保持循环
Console.ReadLine();
Console.Clear();
}
}
}
}
好这个问题,我问它的时间以前,我不知道很多关于C#所以我已经解决它
答
其现在的工作完美
static void Main(string[] args)
{
double a, b,Result;
while (true)
{
Console.WriteLine("\t\t\t\t\t\t\tCalcualtor");
Console.WriteLine("\t\t\t\t\t\t\t----------");
Console.WriteLine("put Number Plz");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("put other Number Plz");
b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Choose :*,+,-,/");
bool successful;
do
{
string uservalue = Console.ReadLine();
if (uservalue == "*")
{
Result = a * b;
Console.Write("Resultat= " + a * b);
successful = true;
}
else if (uservalue == "+")
{
Result = a + b;
Console.Write("Resultat= " + (a + b));
successful = true;
}
else if (uservalue == "-")
{
Result = a - b;
Console.Write("Resultat= " + (a - b));
successful = true;
}
else if (uservalue == "/")
{
Result = a/b;
Console.Write("Resultat= " + (a/b));
successful = true;
}
else
{
Console.WriteLine("put right operator !!!");
successful = false ;
}
}
while (!successful);
{
Console.ReadLine();
Console.Clear();
}
}
}
}
}
答
如果你正在寻找一个完全新手的解决方案,您可能要提高对手术成功的标志,而包装操作员输入到另一个循环:
bool successful;
do
{
string uservalue = Console.ReadLine();
if (uservalue == "*")
{
Result = a * b;
Console.Write("Resultat= " + a * b);
successful = true;
}
//other operators
else
Console.WriteLine("put right operator !!!");
} while (!successful)
此外,我会建议开关/箱sonstruction,这样的:
string uservalue = Console.ReadLine();
switch (uservalue)
{
case "*":
Console.Write("Resultat= " + (a * b));
break;
//other operators
default:
Console.WriteLine("put right operator !!!");
break;
}
PS:你要指定当值的变量“结果”,而第二个输出字符串时,如果你已经在你的变量有值计算你的价值观两次,一次,你应该叫Console.Write("Resultat= " + Result);
+0
我很好尝试添加到我的代码我欣赏帮助 – Elmissouri
答
我想创建函数来读取用户输入:
static double GetNumber(string prompt) {
double answer;
Console.WriteLine(prompt);
while (true) {
if (double.TryParse(Console.ReadLine(), out answer)) {
return answer;
}
Console.WriteLine("Error: Try again");
}
}
static string GetOperator(string prompt) {
string answer;
Console.WriteLine(prompt);
while (true) {
answer = Console.ReadLine();
if ("*/+-".Contains(answer)) {
return answer;
}
Console.WriteLine("Error: Try again");
}
}
然后你的主变:
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("\t\t\t\t\t\t\tCalcualtor");
Console.WriteLine("\t\t\t\t\t\t\t----------");
double a = GetNumber("put Number Plz");
double b = GetNumber("put other Number Plz");
string uservalue = GetOperator("Choose :*,+,-,/");
if (uservalue == "*")
{
Console.Write("Resultat= " + a * b);
}
else if (uservalue == "+")
{
Console.Write("Resultat= " + (a + b));
}
else if (uservalue == "-")
{
Console.Write("Resultat= " + (a - b));
}
else if (uservalue == "/")
{
Console.Write("Resultat= " + (a/b));
}
Console.ReadLine();
Console.Clear();
}
+0
我很好,谢谢你的帮助 – Elmissouri
我没有看到一个问题呢,只是一串代码。另外,不要使用'goto' – BradleyDotNET
问题是在别的我需要回到控制台用户值,所以我怎么做? – Elmissouri
这不是一个连贯的问题。您已经打印了计算结果... – BradleyDotNET