Принятие решений из меню

1

это мой первый пост и мой первый семестр в С#. У меня есть домашнее задание, над которым я работал несколько дней, и я не могу понять это. Я попытаюсь объяснить это как можно лучше.

Поэтому я должен создать класс для вызова двух других классов и компиляции классов для печати. Пользователь должен выбрать номер из меню, и этот номер должен выполнить математическую операцию и распечатать ответ. Я не могу получить код для создания выбора и выполнения математической операции.

Вот мой первый класс.

class MainModule
{
    static void Main()
    {
        string assignment = "Assignment#3B-Math Operations Modified";

        MathOperationUI myNumber = new MathOperationUI();
        myNumber.MathMainModule();

        Console.ReadLine();

Вот мой второй класс.

class MathOperations
{
    int firstOperand;
    int secondOperand;

    public int FirstOperand
    {
        get
        {
            return firstOperand;
        }
        set
        {
            firstOperand = value;
        }
    }

    public int SecondOperand
    {
        get
        {
            return secondOperand;
        }
        set
        {
            secondOperand = value;
        }
    }

    public MathOperations()
    {
        firstOperand = 0;
        secondOperand = 0;
    }

    public double Add()
    {
        double theAddition;
        theAddition = (firstOperand + secondOperand);
        return theAddition;
    }

    public double Subtract()
    {
        double theSubtraction;
        theSubtraction = (firstOperand - secondOperand);
        return theSubtraction;
    }

    public double Multiply()
    {
        double theMultiplication;
        theMultiplication = (firstOperand * secondOperand);
        return theMultiplication;
    }

    public double Divide()
    {
        double theDivision;
        theDivision = (float)firstOperand / (float)secondOperand;
        return theDivision;

И мой последний класс, который дал мне проблему.

class MathOperationUI
{
    public MathOperationUI()
    {
    }
    public void MathMainModule()
    {
        int firstOperand;
        int secondOperand;

        DisplayMenu();         

        MathOperations usersMathOperations;

        firstOperand = PromptForInterger("first");
        secondOperand = PromptForInterger("second");

        usersMathOperations = new MathOperations ();
    }

    public void DisplayMenu()
    {
        Console.WriteLine("\n\tMenu");
        Console.WriteLine("****************************");
        Console.WriteLine("1: Addition Operation");
        Console.WriteLine("2: Subtraction Operation");
        Console.WriteLine("3: Multiplication Operation");
        Console.WriteLine("4: Division Operation");
        Console.WriteLine("5: Exit");
        Console.WriteLine("****************************");
    }

    static int ProcessMenu(int choice)
    {
        if (choice == 1)
            Console.WriteLine("\nWhen adding the number {0} and {1}, the answer is {2}", myNumber.FirstOperand, myNumber.SecondOperand, addition);
        else
            if (choice == 2)
                Console.WriteLine("\nWhen subtracting the number {0} and {1}, the answer is {2}", myNumber.FirstOperand, myNumber.SecondOperand, subtraction);
            else
                if (choice == 3)
                    Console.WriteLine("\nWhen multipling the number {0} and {1}, the answer is {2}", myNumber.FirstOperand, myNumber.SecondOperand, multiplication);
                else
                    if (choice == 4)
                        Console.WriteLine("\nWhen dividing the number {0} and {1}, the answer is {2:F2}", myNumber.FirstOperand, myNumber.SecondOperand, division);
                    else
                        if (choice == 5)
                            return 0;
    }

    static int PromptForInterger(string position)
    {
        Console.WriteLine("\n\nEnter the {0} number:\t", position);
        return (int.Parse(Console.ReadLine()));
    }
  • 5
    Похоже, вы просто перестали писать код, когда попали в беду. Вам нужно удалить статические из метода ProcessMenu (), чтобы продвинуться вперед.
  • 0
    Я все еще работаю над этим. Я снял статический и ничего не изменилось. Я получаю сообщение об ошибке "Имя myNumber не существует в текущем контексте.
Теги:

2 ответа

2
Лучший ответ

myNumber не существует в текущем контексте, потому что он должен либо существовать в функции ProcessMenu, он должен существовать в контексте global/instance. Вы на правильном пути, но у вас отсутствуют некоторые моменты. Объявите объект MathOperations в качестве переменной intance в вашем классе MathOperationsUI, чем в MathMainModule, установите FirstOperand и SecondOperand этого объекта и вызовите ProcessMenu. В меню "Process" вместо использования myNumber используйте объект, который вы объявили как переменная экземпляра (MathOperations), и вызовите его соответствующие функции (добавьте, умножьте и т.д.). Сообщите мне, если вы его заработаете. У меня есть рабочая версия, которую я опубликую, если вы не сможете ее получить.

Это можно получить только в основном методе, потому что это то, где оно объявлено. Если он объявлен в методе, его можно получить только в этом методе, если вы не передадите его как параметр другому методу.

 MathOperationUI myNumber = new MathOperationUI();

Кроме того, вы не хотите вызывать myNumber.FirstOperand потому что myNumber - это тип MathOperationUI, но FirstOperand находится в MathOperations, а не в..UI.

Ваш MathOperationUI должен выглядеть следующим образом. Объект MathOperations, объявленный в классе (MathOperationUI), но вне любого метода. Это означает, что вы можете получить доступ к этому объекту из любого метода в MathOperationUI. Затем вы должны установить свойства MathOperations (первый и второй операнд) с пользовательским вводом из PromptForInterger. Наконец, вы должны вызвать метод ProcessMenu для обработки этих входов.

public class MathOperationUI
{
    MathOperations usersMathOperations;

    public MathOperationUI()
    {
        usersMathOperations = new MathOperations();
    }

    public void MathMainModule()
    {
        DisplayMenu();
        usersMathOperations.FirstOperand = PromptForInterger("first");
        usersMathOperations.SecondOperand = PromptForInterger("second");
        Console.WriteLine("\n\nEnter your coice");
        ProcessMenu(int.Parse(Console.ReadLine()));
    }

Теперь вы можете получить доступ к этому объекту из метода процесса. И вы можете получить свой первый и второй операнды и вызвать методы Add, Multiply и т.д.

Console.WriteLine("\nWhen adding the number {0} and {1}, the answer is {2}", usersMathOperations.FirstOperand, usersMathOperations.SecondOperand, usersMathOperations.Add());

Наконец, вот часть, которая работает https://dotnetfiddle.net/5lE63L

Надеюсь, это немного улучшит ситуацию.

  • 0
    Спасибо, я вижу, что я сделал не так.
2

Я думаю, что у вас возникают проблемы с выполнением нескольких аспектов программирования:

Сфера особенно важна и будет влиять на почти каждую строку кода, которую вы когда-либо писали.

Возможно, вы могли бы попросить своего наставника снова пройти эти концепции для вас?

(Это не совсем решение, так как я неохотно даю вам ответ на вашу домашнюю работу, но, надеюсь, укажет вам в правильном направлении.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню