Как я могу настроить три метода на C#, которые принимают ввод пользователя и вычисляют ввод?

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

В проекте консольного приложения в файле класса мне нужно создать объект с именем «Оператор». С ним должны быть связаны три метода, по одному для сложения, вычитания и деления. Программный файл должен просить пользователя ввести целое число, которое затем передается через каждый метод и затем возвращается в качестве результата на консоль. Они не указали, на что складывать / вычитать / делить, поэтому я собираюсь использовать метод 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 («Выберите число»), вероятно, войдет в основной метод, а сложение / вычитание / деление будут отдельными методами ниже основного. Но кроме этого, я понятия не имею, по какому шаблону это должно следовать. Я также не уверен, как «передавать» результат от одного метода к другому, пока не будут использованы все методы. Опять же, я не ожидаю, что это будет сделано за меня, но мне действительно нужно руководство о том, как подойти к этому, чтобы начать работу. Даже общий набросок того, что нужно делать, действительно поможет. В моем программном коде сейчас столько беспорядка, что я не могу им поделиться, поскольку в нем нет смысла.

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

Амиру:

Спасибо большое за вашу помощь! Не могли бы вы подробнее объяснить, как отформатировать код консоли, который вы написали, для вызова методов? Я запутался, потому что нас учили использовать этот формат для файла 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)

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

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

Вы хотите выполнить операцию для целого числа и написать на консоли?

AmirReza-Farahlagha 30.09.2018 23:12

Это был хороший вопрос, проверьте мой ответ, пожалуйста.

AmirReza-Farahlagha 30.09.2018 23:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
2
903
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Обновлять:

Это 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;
        }
    }
}

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

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

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

Спасибо, AmirReza! Это очень полезно. Однако у меня есть пара проблем с пониманием некоторых из них. Я понимаю размещенный вами код Operator cs, но я немного не уверен, как заставить работать код консоли. Не могли бы вы немного объяснить, как настроить программный файл? Я делаю свой ответ как редактирование моего исходного сообщения, так как здесь слишком много времени, чтобы писать здесь

FreddieMercury 01.10.2018 01:19

@FreddieMercury Большое спасибо. Если это было полезно, вы можете отметить мой вопрос и поддержать его. А по поводу вашего вопроса, вы создавали консольное приложение ?? Сейчас я хочу отредактировать свой ответ и позвоню вам.

AmirReza-Farahlagha 01.10.2018 09:22

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

AmirReza-Farahlagha 01.10.2018 09:31

Спасибо, Амир !! И извините за поздний ответ. Я ценю ваше редактирование! Этот метод и класс становятся более понятными для меня благодаря вам и другим ответам!

FreddieMercury 08.10.2018 09:25
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();

Филипп, спасибо вам огромное !!! Это очень помогло мне понять, как структурированы методы и классы :)

FreddieMercury 01.10.2018 23:49

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

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 не любит, если вы это измените! Кроме того, я рекомендую не загромождать импорт ненужными вещами. Только используя System, импортируйте только System. Просто потому, что это значение по умолчанию, не означает, что это необходимо. Кроме того, использование настройки поля данных интересно и не так, как я бы это сделал, вам это, вероятно, не нужно? Я думаю, что просто использовать переменную в Main проще и удобнее для чтения с меньшим количеством кода. Кроме того, не забудьте проанализировать строковый объект и преобразовать его в int для операций !!!

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

Спасибо QuantumMechanic! Я думаю, что раньше у меня было небольшое недоразумение, но теперь я понимаю! Ваш ответ прояснил мою проблему.

FreddieMercury 01.10.2018 23:50

Не беспокойтесь, просто проголосуйте за любые ответы, которые вам нравятся, и отметьте один как ответ, тогда, если все прояснено.

theQuantumMechanic 02.10.2018 01:18

Другие вопросы по теме