繁体   English   中英

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

[英]How can I set up three methods in C# that takes a user input and does math on the input?

这是初学者的任务,因此我了解人们不希望给我答案。 但是,如果可能的话,我会很高兴被引导向正确的方向,因为我非常注意以下提示:

在控制台应用程序项目的类文件中,我需要创建一个名为“ 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)

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

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

更新:

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

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

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

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

尽管您似乎在询问有关如何实现答案的代码的新问题,但其他答案已经回答了该问题。 您已经在问题的编辑上敲了钉子,上面想要的答案(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进行操作!!!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM