это мой первый пост и мой первый семестр в С#. У меня есть домашнее задание, над которым я работал несколько дней, и я не могу понять это. Я попытаюсь объяснить это как можно лучше.
Поэтому я должен создать класс для вызова двух других классов и компиляции классов для печати. Пользователь должен выбрать номер из меню, и этот номер должен выполнить математическую операцию и распечатать ответ. Я не могу получить код для создания выбора и выполнения математической операции.
Вот мой первый класс.
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()));
}
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
Надеюсь, это немного улучшит ситуацию.
Я думаю, что у вас возникают проблемы с выполнением нескольких аспектов программирования:
Область действия - http://en.wikipedia.org/wiki/Scope_%28computer_science%29#Expression_scope
Назначение значений - http://en.wikipedia.org/wiki/Assignment_%28computer_science%29
Сфера особенно важна и будет влиять на почти каждую строку кода, которую вы когда-либо писали.
Возможно, вы могли бы попросить своего наставника снова пройти эти концепции для вас?
(Это не совсем решение, так как я неохотно даю вам ответ на вашу домашнюю работу, но, надеюсь, укажет вам в правильном направлении.)