将随机计算的int变量值放入arrayList中

时间:2017-12-18 23:53:58

标签: c#

我是C#的新手。有什么方法可以将roll1变量值放入rolls arrayList中吗?我是否需要将此部分放在与主要部分分开的方法中?

Random diceRoll1 = new Random();

int throw1 = diceRoll1.Next(1, 18);

Random diceRoll2 = new Random();

int throw2 = diceRoll2.Next(1, 12);

Random diceRoll3 = new Random();

int throw3 = diceRoll3.Next(1, 6);

ArrayList rolls = new ArrayList();

int roll1 = Console.WriteLine(throw1 + throw2 + throw3);
Console.ReadLine();

2 个答案:

答案 0 :(得分:1)

首先要注意的是,每次需要随机数时,您都不需要创建新的RandomRandom是从当前时间开始播种的,因此代码很可能运行得足够快,以至于您获得了三个相同的随机数。至于将值添加到列表中,有几个不同的选项。如果您始终要将包含三个分组值的项目放入列表中,则可以使用Tuple<int, int, int>。这是一个例子:

Random rnd = new Random();
int throw1 = rnd.Next(1, 18);
int throw2 = rnd.Next(1, 12);
int throw3 = rnd.Next(1, 6);

List<Tuple<int, int, int>> rolls = new List<Tuple<int, int, int>>();
rolls.Add(new Tuple<int, int, int>(throw1, throw2, throw3));

或者,您可以使用嵌套的整数列表,将最后两行替换为:

List<List<int>> rolls = new List<List<int>>();
rolls.Add(new List<int> { throw1, throw2, throw3 });

最后,您还可以使用数组:

List<int[]> rolls = new List<int[]>();
rolls.Add(new int[] { throw1, throw2, throw3 });

另一种选择是制作一个自定义类来保存你的骰子卷值(让我们称之为MultiDiceRoll)并列出一个(List<MultiDiceRoll>)。

修改

如果您想使用ArrayList(我不会建议,由于我将要进入的原因),您可以执行以下操作:

ArrayList rolls = new ArrayList();
rolls.Add(new int[] { throw1, throw2, throw3 }); // Or whatever other permutation you want

我建议不要这样做是因为ArrayList内的项目是object。也就是说,ArrayList并不像List<T>那样使用泛型。这意味着每次访问列表中的某个项目并希望以某种方式使用它时,都必须将其强制转换为所需的类型(例如(int[])rolls[0])。如果更改列表项的类型,则需要清理和更改许多类型引用。

答案 1 :(得分:-1)

您可以初始化int类型列表并将每个元素添加到该列表中。添加所有元素后,您可以遍历该列表并打印它。 https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx