Как я могу настроить три метода в C #, который принимает пользовательский ввод и выполняет математические операции на входе? - PullRequest
0 голосов
/ 30 сентября 2018

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

В проекте консольного приложения в файле класса мне нужно создать объект с именем "Оператор «.С ним должны быть связаны три метода, по одному для сложения, вычитания и деления.Программный файл должен попросить пользователя ввести целое число, которое затем передается через каждый метод, а затем возвращается в результате на консоль.Они не указали, на что добавлять / вычитать / делить, поэтому я собираюсь использовать метод 1, чтобы добавить «4» к пользовательскому вводу, метод 2, чтобы вычесть «3», и последний метод, чтобы разделить на «1».

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

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

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

namespace threemethods
{
    public class Operator
    {

    }
}

Я до сих пор понимаю, что это, вероятно, неправильно, но я не знаю, что еще должно быть в классефайл, так как все методы будут в файле программы.Теперь, где я действительно борюсь, это программа.Я не знаю, куда все положить, потому что ни один из примеров, которые я видел, не связан с пользовательским вводом, и большинство из них не выполняется внешне.Я знаю, что Console.WriteLine («Pick a number»), вероятно, будет использоваться в основном методе, а сложение / вычитание / деление будут отдельными методами ниже основного.Но кроме этого, я понятия не имею, что шаблон должен следовать.Я также не уверен, как «передать» результат от одного метода другому, пока не будут использованы все методы.Опять же, я не ожидаю, что это будет сделано для меня, но мне действительно нужно руководство о том, как подойти к этому, чтобы заставить меня работать.Даже общий план того, куда все должно идти, действительно поможет.Мой программный код сейчас настолько запутан, что я не могу им поделиться, так как в этом нет смысла.

Большое вам спасибо!

Амиру:

Большое спасибо за вашу помощь!Не могли бы вы подробнее рассказать о том, как отформатировать код консоли, который вы написали для вызова методов?Причина, по которой я запутался, заключается в том, что нас учат использовать этот формат для файла program.cs:

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

namespace threemethods
{
    class Program
    {
     static void Main(int[] args)

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

Большое вам спасибо !!Извините, если то, что я сказал, сбивает с толку!

Ответы [ 3 ]

0 голосов
/ 01 октября 2018
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace threemethods
{
 public class Operator
 {
    public int Add(int data, int value)
    {
         return data + value;
    }    

    public int Subtract(int data, int value)
    {
        return data - value;
    }

    public int Divide(int data, int value)
    {
         return data / value;
    }
 }
}

Обратите внимание, что все методы возвращают целое число.При необходимости измените его на некоторое плавающее значение.

Основная функция:

Console.WriteLine("Enter input:");
var userValue = Convert.ToInt32(Console.ReadLine());

var operatorObject = new Operator();
var result = operatorObject.Add(userValue, 4);
result = operatorObject.Subtract(result, 3);
result = operatorObject.Divide(result, 1);

Console.WriteLine(result);
Console.ReadLine();
0 голосов
/ 01 октября 2018

Другие ответы уже ответили на вопрос, хотя вы, похоже, задаете новый вопрос о том, как реализовать код с ответом?Вы уже ударили гвоздь по голове при редактировании своего вопроса, ответ любого из вышеупомянутых вопросов, который вы предпочитаете (Амира или Филиппа), просто написан в основном классе, который вы уже сделали!Используя Amir's в качестве примера:

using System;

namespace threemethods
{

    public class Operator
    {
        public double GetAdd(int data)
        {
            data = data + 4;
            return GetSubtract(data);
        }

        private double GetSubtract(double data)
        {
            data = data - 3;
            return GetDivide(data);
        }

        private double GetDivide(double data)
        {
            return data / 3;
        }
    }
    class Program
    {
        public static int Data { get; set; }
        static void Main(string[] args)
        {
            Console.WriteLine("Enter input:");
            string line = Console.ReadLine();
            Data = Int32.Parse(line);
            var operatorObject = new Operator();
            var result = operatorObject.GetAdd(Data);
            Console.WriteLine(result);
            Console.ReadLine();
        }
    }
}

Обратите внимание, вы бы выдавали ошибку на main, поскольку аргументы для точки входа в консоль - Main (string [] args) и не Main (int [] args)).VS не нравится, если вы измените это!Кроме того, я рекомендую не раздувать ваш импорт с вещами, которые вам не нужны.Только с использованием системы, только импорт системы.То, что это по умолчанию, не означает, что это необходимо.Кроме того, интересно использовать настройку поля данных, а не то, как я бы это сделал, вам, вероятно, это не нужно?Я думаю, что просто использовать переменную в Main проще и понятнее при меньшем количестве кода.Кроме того, не забудьте проанализировать строковый объект и преобразовать его в int для операций !!!

Это будет ваш пример реализации!Веселитесь.

0 голосов
/ 01 октября 2018

Обновление:

Это CS-файл о консоли:

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

namespace Test
{
    class Program
    {
        public int Data { get; set; }
        static void Main(string[] args)
        {
            Console.WriteLine("Enter input:");
            string line = Console.ReadLine();

            var operatorObject = new Operator(); //You have to add reference, If is not.
            var result = operatorObject.GetAdd(data);

            Console.WriteLine(result);
            Console.ReadLine();
        }
    }
}

Теперь в этом файле Operator.CS:

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

namespace threemethods
{
    public class Operator
    {
        public double GetAdd(int data)
        {
             data = data + 4;
             return GetSubtract(data);
        }    

        private  double GetSubtract(double data)
        {
             data = data - 3;
             return GetDivide(data);
        }

        private  double GetDivide(double data)
        {
             return data / 3;
        }
    }
}

Для решения этой проблемы вы должны установить private 2 последний метод и работать с одним из них, как мой пример.

В этом примере вы можете вызвать только один из методов и так легко его разработать.

Если хотите, я могу создать для вас еще образец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...