我有以下作业。
使用以下元素设计名为TokenGiver
的类:
int
其他要求:
TokenGiver
对象TokenGiver
对象有多少令牌并显示结果TokenGiver
对象TokenGiver
对象有多少令牌并显示结果有没有更好的方法可以从我的Main()
方法一次减去两个令牌,或者只用两次调用GetToken()
方法?
代码段:
using System;
class Program
{
const int NUM_TOKENS = 10;
static void Main()
{
TokenGiver tokenMachine = new TokenGiver(NUM_TOKENS);
Console.WriteLine("Current number of tokens = {0}",
tokenMachine.CountTokens());
tokenMachine.GetToken();
tokenMachine.GetToken();
Console.WriteLine("New number of tokens = {0}",
tokenMachine.CountTokens());
Console.ReadLine();
}
}
class TokenGiver
{
private int numTokens;
public TokenGiver()
{
numTokens = 0;
}
public TokenGiver(int t)
{
numTokens = t;
}
public void AddTokens(int t)
{
numTokens += t;
}
public void GetToken()
{
numTokens--;
}
public int CountTokens()
{
return numTokens;
}
}
答案 0 :(得分:2)
public void GetToken(int t)
{
numTokens -= t;
}
然后你可以调用GetToken(2);
答案 1 :(得分:1)
那么,是否有更好的方法来提取两个令牌而不是两次调用GetToken似乎无关紧要,因为你的一个要求是:
(该类应具有)从您的令牌数中减去一个令牌的方法
所以,你似乎陷入了两次通话。由于这是一个非常人为的任务,你也可以坚持要求。如果你真的想学习一些东西,那就开始你自己的个人项目。 :)
另外,您可以在C#中链接构造函数。所以这个:
public TokenGiver()
{
numTokens = 0;
}
public TokenGiver(int t)
{
numTokens = t;
}
... ...变为
public TokenGiver() : this(0) { }
public TokenGiver(int t)
{
numTokens = t;
}
答案 2 :(得分:0)
根据要求,你必须两次调用GetToken ......但是当然可以为这个方法创建一个重载,它会将令牌数减去作为参数。
作为旁注:GetToken是一个选择不当的名称...通常一个名称以“Get”开头的方法应该返回一些东西。您可以将其称为“TakeToken”,或类似的东西
答案 3 :(得分:0)
他的要求是创造,然后添加10个令牌。使用10调用构造函数 - 使用void调用构造函数,然后添加10。我相信这是作业。
答案 4 :(得分:0)
要简单回答您的问题,tokenMachine.AddTokens(-2)
出了什么问题?鉴于这些要求,它似乎不是不可能的。 .NET框架也通常也使用这种结构(例如DateTime.AddDays()
采用负数减去)。
但是,一个不好的教练可能会使用“他打算指定机器一次只能分配一个令牌”这一论点来标记你,所以最好澄清规范。 / p>