好的,所以我今天早些时候开始这个项目来练习到目前为止我学到的东西。我几乎完成了它,除了我不能在中间得到这个其他声明为我工作。对于数学运算中的选择,我希望如果用户选择一个我没有的选项,它会告诉他它不是一个选项并关闭/重启但是由于某种原因,else语句正在使它说它不是一个操作无论我选择实际操作。这是我的代码。
using System;
class Program
{
//varibale for do-while loop
private static string endAnswer;
public static void Main() // <----- The Entry point
{
//Variables
string Choice1;
string mathChoice;
int Num1;
int Num2;
int Answer;
Console.WriteLine("Would you like to use Lane's Custom Calculator? ");
Choice1 = Console.ReadLine();
if (Choice1 == "Yes")
{
do
{
Console.WriteLine("Would you like to Add, Subtract, Multiply, or Divide? (Case Sensitive)");
mathChoice = Console.ReadLine();
//User inputs the 2 numbers
//Math Choices
if (mathChoice == "Add")
{
Console.WriteLine("What 2 numbers would you like to use?");
Console.Write("Number 1 is: ");
Num1 = int.Parse(Console.ReadLine());
Console.Write("Number 2 is: ");
Num2 = int.Parse(Console.ReadLine());
Answer = Num1 + Num2;
Console.WriteLine("The answer is: " + Answer);
}
if (mathChoice == "Subtract")
{
Console.WriteLine("What 2 numbers would you like to use?");
Console.Write("Number 1 is: ");
Num1 = int.Parse(Console.ReadLine());
Console.Write("Number 2 is: ");
Num2 = int.Parse(Console.ReadLine());
Answer = Num1 - Num2;
Console.WriteLine("The answer is: " + Answer);
}
if (mathChoice == "Multiply")
{
Console.WriteLine("What 2 numbers would you like to use?");
Console.Write("Number 1 is: ");
Num1 = int.Parse(Console.ReadLine());
Console.Write("Number 2 is: ");
Num2 = int.Parse(Console.ReadLine());
Answer = Num1 * Num2;
Console.WriteLine("The answer is: " + Answer);
}
if (mathChoice == "Divide")
{
Console.WriteLine("What 2 numbers would you like to use?");
Console.Write("Number 1 is: ");
Num1 = int.Parse(Console.ReadLine());
Console.Write("Number 2 is: ");
Num2 = int.Parse(Console.ReadLine());
Answer = Num1 / Num2;
Console.WriteLine("The answer is: " + Answer);
}
//This is the else statement that is giving me problems!!
else
{
Console.WriteLine("This is not an option! Shutting Down..");
Console.ReadKey();
Environment.Exit(0);
}
//varibale for while loop to continue if selected Yes.
Console.WriteLine("Another Equation? ");
endAnswer = Console.ReadLine();
} while (endAnswer == "Yes");
//Goodbye Message
Console.WriteLine("Thank you for using my program, goodbye ");
Console.ReadKey();
Environment.Exit(0);
}
**//If someone selects no for wanting to use my program.
else
{
Console.WriteLine("Not and option...exiting Program...");
Console.ReadKey();
Environment.Exit(0);
}**
}
}
答案 0 :(得分:1)
问题是由于多次使用if块,而是使用if - else if - else阻止你的程序,然后只有它会起作用。 你的代码结构是&#34;如果是&#34;应该像
`if(mathChoice == "Add")
{
//code
}
else if(mathChoice == "Substract")
{
//code
}
else if(mathChoice == "Multiply")
{
//code
}
else if(mathChoice == "Divide")
{
//code
}
else{
//This is not an option! Shutting Down..
}`
答案 1 :(得分:0)
您的代码无效的原因是您有多个if语句,但没有else
。
If-else
是一个完整的块。else
只对应一个if语句。所以你可以做的就是制作一个if-else
的级联,最后只有一个else
- 你定义你的后备。
在您的情况下,我强烈建议使用switch
声明。
它只会使您的代码更加清晰。
它与if-else语句几乎相同。您可以阅读有关switch here的更多信息。
<强>代码:强>
switch (mathChoice.ToLower())
{
case "add":
Console.WriteLine("What 2 numbers would you like to use?");
Console.Write("Number 1 is: ");
Num1 = int.Parse(Console.ReadLine());
Console.Write("Number 2 is: ");
Num2 = int.Parse(Console.ReadLine());
Answer = Num1 + Num2;
Console.WriteLine("The answer is: " + Answer);
break;
case "substract":
Console.WriteLine("What 2 numbers would you like to use?");
Console.Write("Number 1 is: ");
Num1 = int.Parse(Console.ReadLine());
Console.Write("Number 2 is: ");
Num2 = int.Parse(Console.ReadLine());
Answer = Num1 - Num2;
Console.WriteLine("The answer is: " + Answer);
break;
case "multiply":
Console.WriteLine("What 2 numbers would you like to use?");
Console.Write("Number 1 is: ");
Num1 = int.Parse(Console.ReadLine());
Console.Write("Number 2 is: ");
Num2 = int.Parse(Console.ReadLine());
Answer = Num1 * Num2;
Console.WriteLine("The answer is: " + Answer);
break;
case "divide":
Console.WriteLine("What 2 numbers would you like to use?");
Console.Write("Number 1 is: ");
Num1 = int.Parse(Console.ReadLine());
Console.Write("Number 2 is: ");
Num2 = int.Parse(Console.ReadLine());
Answer = Num1 / Num2;
Console.WriteLine("The answer is: " + Answer);
break;
default:
Console.WriteLine("This is not an option! Shutting Down..");
Console.ReadKey();
Environment.Exit(0);
break;
}
现在,我想讨论两件事:
somestring.ToLower()
即可将其转换为小写。然后,您只需将其与小写字符串进行比较。default
。我只想指出,default
是一个后备值,如果与任何case
元素不匹配,则会选择该值。