【问题标题】:How can I set up three methods in C# that takes a user input and does math on the input?如何在 C# 中设置三个接受用户输入并对输入进行数学运算的方法?
【发布时间】:2018-09-30 20:58:05
【问题描述】:

这是一个初学者的作业,所以我理解人们不想只给我答案。但如果可能的话,我会很高兴被指出正确的方向,因为我非常坚持这个提示:

在控制台应用程序项目的类文件中,我需要创建一个名为“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") 可能会进入主要方法,加法/减法/除法将是主要方法下面的单独方法。但除此之外,我不知道应该遵循的模板。在使用所有方法之前,我也不确定如何将结果从一种方法“传递”到另一种方法。再说一次,我并不指望它会为我完成,但我真的需要关于如何处理这个问题的指导才能让我继续前进。即使是一个大致的事情应该去哪里的大纲也会真的很有帮助。我的程序代码现在太乱了,我不能分享它,因为它没有意义。

非常感谢!

致阿米尔:

非常感谢您的帮助!您能否详细说明如何格式化您编写的控制台代码以调用这些方法?我感到困惑的原因是我们被教导为 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)

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

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

【问题讨论】:

  • 你想对整数做运算并写在consol上吗?
  • 这是一个好问题,请检查我的答案。

标签: c# object methods console


【解决方案1】:

更新:

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

使用此示例,您只需调用其中一种方法即可轻松开发。

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

【讨论】:

  • 谢谢阿米尔雷扎!这很有帮助。不过,我在理解其中一些方面确实存在一些问题。我了解您发布的 Operator cs 代码,但我有点不确定如何使控制台代码工作。你能解释一下如何设置程序文件吗?我的回复是对我原来帖子的编辑,因为这里写得太长了
  • @FreddieMercury 非常感谢。如果这有帮助,您可以标记我的问题并上传。关于您的问题,您是否创建了控制台应用程序?现在我想编辑我的答案,我会打电话给你。
  • @FreddieMercury 我编辑了我的答案,请检查。您可以将控制台示例复制到您的控制台代码并运行。如果不工作,告诉我来帮助你。
  • 谢谢阿米尔!!很抱歉回复晚了。感谢您的编辑!感谢您和其他答案,这种方法和类的东西开始对我更有意义!
【解决方案2】:
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();

【讨论】:

  • 菲利普,非常感谢!!!这对让我了解方法和类的结构非常有帮助:)
【解决方案3】:

其他答案已经回答了这个问题,尽管您似乎在问一个关于如何实现已回答代码的新问题?您已经在编辑问题时一针见血,您喜欢的以上任一答案(Amir 的或 Philipp 的)只是写在您已经制作的主要课程中!以阿米尔为例:

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进行操作!!!

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

【讨论】:

  • 感谢量子力学!我想我以前有点误解,但现在我明白了!您的回答澄清了我的问题。
  • 不用担心,只要投票您喜欢的任何答案,并将其中一个标记为已回答,如果一切都解决了。
猜你喜欢
  • 2012-07-18
  • 1970-01-01
  • 2015-01-08
  • 1970-01-01
  • 2018-09-12
  • 2022-10-05
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
相关资源
最近更新 更多