如何在C#中设置三种方法来接受用户输入并对输入进行数学运算?

时间:2018-09-30 20:58:05

标签: c# object methods console

这是初学者的作业,因此我了解人们不想只给我答案。但是,如果可能的话,我很高兴能朝着正确的方向指路,因为我非常注意此提示:

在控制台应用程序项目的类文件中,我需要创建一个名为“ Operator”的对象。它必须与三种方法关联,每种方法分别用于加法,减法和除法。程序文件必须要求用户键入一个整数,然后将其通过每个方法传递,然后作为结果返回到控制台。他们没有指定要加/减/除的内容,因此我将使用方法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”)可能会进入main方法,而加法/减法/除法将是main方法之下的单独方法。但是除此之外,我不知道应该遵循的模板。我也不确定如何在使用完所有方法之前将结果从一种方法“传递”到下一种方法。同样,我并不希望为我完成此工作,但是我确实需要有关如何进行此操作的指南,以帮助我前进。即使是一般性的概述也应该会有所帮助。我的程序代码现在太乱了,我无法共享它,因为那毫无意义。

非常感谢您!

致阿米尔:

非常感谢您的帮助!您能否解释一下如何格式化为调用方法而编写的控制台代码?我感到困惑的原因是我们被教导要在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)

然后是下面的main方法。因此,当学校给我的格式有所不同时,我不确定如何正确集成您的控制台代码。如果我将您的控制台代码放在程序文件中,您能否告诉我应该添加什么代码才能使程序正常工作?例如,如何在控制台代码之前在文件顶部写什么?

非常感谢!!对不起,如果我说的话令人困惑!

3 个答案:

答案 0 :(得分:4)

更新

这是有关控制台的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 last方法,并像我的示例一样使用其中的一种方法。

使用此示例,您可以仅调用其中一种方法,并且开发如此简单。

如果您愿意,我可以为您创建更多示例。

答案 1 :(得分:1)

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();

答案 2 :(得分:1)

其他答案已经回答了该问题,尽管您似乎在询问有关如何实现答案代码的新问题?您已经在问题的编辑上敲了钉子,上面想要的答案(Amir或Philipp的答案)只是写在已经完成的主类中!以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进行操作!!!

这将是您的示例实现!玩得开心。