質問

I'm banging my head trying to figure out why I can't get my equations to not return as Zero as it seems that for some reason the MathOperations methods aren't doing there job? If anyone could help I would much appreciate it. Thanks in advance!

class MathUI
        {
            public void PromptForInt()
            {
                MathOperations ops = new MathOperations();
                Console.WriteLine("Enter first number to calculate");
                ops.Operand1 = int.Parse(Console.ReadLine());
                Console.WriteLine("\nEnter second number to calculate");
                ops.Operand2 = int.Parse(Console.ReadLine());
                return;
            }
            public void PromptForChoice()
            {
                int choice;

                MathOperations result = new MathOperations();
                Console.WriteLine("\nWhat type of operation would you like to perform?");
                Console.WriteLine("[1] Add \n[2] Subtract \n[3] Multiply \n[4] Divide \n[5] Exit \n");
                Console.Write("Enter your choice: ");
                choice = int.Parse(Console.ReadLine());

                if (choice == 1)
                {
                    Console.WriteLine(result.AddNumbers());
                }
                else if (choice == 2)
                {
                    Console.WriteLine(result.SubtractNumbers());
                }
                else if (choice == 3)
                {
                    Console.WriteLine(result.MultiplyNumbers());
                }
                else if (choice == 4)
                {
                    Console.WriteLine(result.DivideNumbers());
                }
                else if (choice == 5)
                {
                    Environment.Exit(0);
                }
                else
                {
                    Console.WriteLine("\nInvalid input entered!");
                }
            }

    class MathOperations
        {

            private int operand1;
            private int operand2;

            public int Operand1
            {
                get
                {
                    return operand1;
                }
                set
                {
                    operand1 = value;
                }
            }
            public int Operand2
            {
                get
                {
                    return operand2;
                }
                set
                {
                    operand2 = value;
                }
            }
            public MathOperations()
            {
                operand1 = 0;
                operand2 = 0;
            }
            public int AddNumbers()
            {
                return operand1 + operand2;
            }
            public int SubtractNumbers()
            {
                return operand1 - operand2;
            }
            public float DivideNumbers()
            {
                return (float)operand1 / (float)operand2;  // (float) used to show output with decimal point
            }
            public int MultiplyNumbers()
            {
                return operand1 * operand2;
            }
役に立ちましたか?

解決

You are setting values for operand1 and operand2 for ops object but not result object.

MathOperations ops = new MathOperations();
Console.WriteLine("Enter first number to calculate");
ops.Operand1 = int.Parse(Console.ReadLine());
Console.WriteLine("\nEnter second number to calculate");
ops.Operand2 = int.Parse(Console.ReadLine());

but calling methods on result object whose operand1 and operand2 are initialized to 0 and hence the return values of functions. Remember ops' operand1 and operand2 hold user's input, not result's operand1 and operand2. You should use same ops object for result calculation.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top