繁体   English   中英

将数组索引增加1 C#

[英]Increase an array index by 1 C#

我有一个用于计数的整数数组。

将整数数组的某个索引增加1的最简单方法是什么?

我的代码目前看起来像这样。

input = Convert.ToInt32(textBox1.Text);
number1 = rand.Next(1, 7);
number2 = rand.Next(1, 7);
number3 = rand.Next(1, 7);

//array used to keep track of how many times a certain number has showed up
int[] counters = new int[14];

int sum = number1 + number2 + number3;

for (int i = 0; i <= input; i++)
{

    counters[sum] = counters[sum] + 1; //counters[sum]++;???
}

for (int i = 0; i < 14; i++)
{
    richTextBox1.Text += "The number " + (i + 1) + "showed up" + counters[i] + " times\n";
}

我究竟做错了什么? 我为什么不能做:

array[i]++;    or     array[i] = array[i] + 1; ???

编辑为清楚起见。

我正在尝试做的是:

根据用户需要将3个骰子滚动

将3个骰子相加(总和应在3 -18之间),然后记下每个和解出现的频率。

然后最后以%显示每个数字显示多少次。

您可以使用linq和List来执行此操作,请参见以下代码:

input = Convert.ToInt32(textBox1.Text);

for(var i = 0; i < input; i++)
{
    number1 = rand.Next(1, 7);
    number2 = rand.Next(1, 7);
    number3 = rand.Next(1, 7);

    //array used to keep track of how many times a certain number has showed up
    int sum = number1 + number2 + number3;
    sums.Add(sum); //Where sums is a List<int>
}
var report = sums.GroupBy(i => i).Select(g => new { TimesShowedUp = g.Count(), Sum = g.Key });

foreach(var r in report)
{
    richTextBox1.Text += "The number " + r.Sum + "showed up" + r.TimesShowedUp + " times\n";
}

听起来您真正想要的是以下内容。

Random rand = new Random();
int numberOfRolls = Convert.ToInt32(textBox1.Text);
int[] counters = new int[16]; //16 different possible sums (3 to 18)

for (int i = 0; i < numberOfRolls; i++)
{
    int sum = rand.Next(1, 7) + rand.Next(1, 7) + rand.Next(1, 7);
    counters[sum - 3]++;
}

for (int i = 0; i < 16; i++)
{
    richTextBox1.Text += "The number " + (i + 3) + " showed up " + counters[i] + " times\n";
}

这需要从textBox1滚动的次数,然后循环该次数,以3个随机数(1-6)创建一个sum 并增加数组中的相应位置。 由于存在16种可能性,因此将数组初始化为该大小,并且在打印时只需将3减去即可从总和转换为索引,然后加3即可将其转换回来。

//array used to keep track of how many times a certain number has showed up
int[] counters = new int[15];

iterations = Convert.ToInt32(textBox1.Text);

for (int i = 1; i <= iterations; i++)
{
    number1 = rand.Next(1, 7);
    number2 = rand.Next(1, 7);
    number3 = rand.Next(1, 7);

    int sum = number1 + number2 + number3;

    counters[sum-3]++;
}

for (int i = 0; i <= 15; i++)
{
    richTextBox1.Text += "The number " + (i + 3) + " showed up " + counters[i] + " times\n";
}

暂无
暂无

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

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