используя циклы и методы вместе - PullRequest
0 голосов
/ 14 ноября 2018

Недавно я сделал простой калькулятор, чтобы проверить себя, но он был неуклюжим и загроможденным, потому что он использовал большое количество операторов if, поэтому я использовал переключатели для его очистки.недавно я узнал, как использовать методы, и попытался переместить каждую часть кода в отдельные и релевантные методы.Но, некоторые из моего кода используют циклы, чтобы вернуться к началу кода, чтобы действовать как функция сброса, и теперь он не работает, потому что он не распознает, что он является частью цикла.я попытался вызвать все методы в цикле внутри основного метода, но он все еще не работал.как я могу это исправить?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;

namespace Calculator
{
    class Class1
    {
        static int num1 = 0;
        static int num2 = 0;
        static int answer = 0;
        static string sumType = " ";
        static string consoleContinue = " ";
        static void GetUserInput()
        {
            Console.WriteLine("please enter your first value");
            num1 = int.Parse(Console.ReadLine());

            Console.WriteLine("please enter your second value");
            num2 = int.Parse(Console.ReadLine());
        }

        static void GetSumType()
        {
            Console.WriteLine("would you like to add, subtract, multiply or divide?");
            Console.WriteLine("alternitavely type quit to exit the program");
            sumType = Console.ReadLine();
            switch (sumType.ToLower())
            {
                case "add":
                    answer = (num1 + num2);
                    Console.WriteLine("your answer is {0:0.00}", answer);
                    break;
                case "subtract":
                    answer = (num1 - num2);
                    Console.WriteLine("your answer is {0:0.00}", answer);
                    break;
                case "multiply":
                    answer = (num1 * num2);
                    Console.WriteLine("your answer is {0:0.00}", answer);
                    break;
                case "divide":
                    answer = (num1 / num2);
                    Console.WriteLine("your answer is {0:0.00}", answer);
                    break;
                case "quit":
                    Environment.Exit(-1);
                    break;
            }
        }

        static void ConsoleContnue()
        {
            Console.WriteLine("do you wish to continue? type yes to continue and no to exit the program");
            consoleContinue = Console.ReadLine();
            switch (consoleContinue.ToLower())
            {
                case "yes":
                    continue;
                    break;
                case "no":
                    Environment.Exit(-1);
                    break;
            }
        }

        static void Main(string[] args)
        {
            while (true)
            {
                GetUserInput();
                GetSumType();
                ConsoleContnue();
            }
            Console.ReadLine();
        }
    }
}

1 Ответ

0 голосов
/ 14 ноября 2018

В вашей функции «ConsoleContnue ()» -> в выражении switch для «yes» вы можете удалить «continue», чтобы оно выглядело так:

 switch (consoleContinue.ToLower())
        {
            case "yes":
                break;
            case "no":
                Environment.Exit(-1);
                break;
        }

Тогда ваш код, кажется, работает отлично.

Тем не менее, я бы изменил его на простой однострочный, так как вы заботитесь только о предложении «нет»:

if (consoleContinue.ToLower() == "no") Environment.Exit(-1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...