第一天程序员其他计算器程序声明

时间:2017-06-02 05:58:38

标签: c#

好的,所以我今天早些时候开始这个项目来练习到目前为止我学到的东西。我几乎完成了它,除了我不能在中间得到这个其他声明为我工作。对于数学运算中的选择,我希望如果用户选择一个我没有的选项,它会告诉他它不是一个选项并关闭/重启但是由于某种原因,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);
        }**
    }
}

2 个答案:

答案 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语句,但没有elseIf-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;

            }

现在,我想讨论两件事:

  1. 我注意到您的输入区分大小写。没有必要这样做。您只需执行somestring.ToLower()即可将其转换为小写。然后,您只需将其与小写字符串进行比较。
  2. 如果您阅读有关switch语句的内容,您将了解default。我只想指出,default是一个后备值,如果与任何case元素不匹配,则会选择该值。