我已经设定了一项任务,即创建一个随机生成10个随机数的游戏,快速连续地向用户显示,然后用户必须回到开始并记住下一个数字是高还是低。< / p>
我创建了一个for循环来遍历一个数字数组,以便用随机数快速分配十个变量中的每一个,但是在这个for循环中有一个缩进错误。根据以前的编码经验,我无法判断是否有缩进错误。请有人帮帮我,告诉我发生了什么事吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SummerWorkTask2
{
class Program
{
static void Main(string[] args)
{
Random rnd = new Random();
int i, a, b;
int [] n = new int[10];
for (i = 0; i < 11; i++)
{
n[i] = rnd.Next(1, 13);
}
a = rnd.Next(1,11);
b= 0;
while (b < a)
{
Console.WriteLine("This number is " + n[b]);
Console.ReadLine();
Console.Clear();
b++
}
}
}
}
代码行n[i] = rnd.Next(1, 13);
显然没有缩进,即使这个网站也能识别它,但是我已经尝试了所有内容,所有空格和显然四个空格都不起作用。
我得到的错误是
未处理的类型&#39; System.IndexOutOfRangeException&#39;发生在SummerWorkTask2.exe中 附加信息:索引超出了数组的范围。
视觉工作室然后点亮线[1] = rnd.Next91,13);
如果有任何用途,我在Visual Studio 2012中进行编码。
答案 0 :(得分:1)
我无意中偶然发现了这篇较老的帖子,我无法相信为什么每个人都在聊聊C#中的缩进而不是阅读代码并向Scott展示他遇到的问题。
好的,好在这里:
int [] n = new int[10];
for (i = 0; i < 11; i++)
{ ... }
创建一个大小为10
的数组,就像这里......
int [] n = new int[10];
...使用10
“广告位”创建并排列数组 - 从索引0
到9
。我将每个值写为?
到这些插槽中,因为我不想将任何人与其他数字混淆:
index 0 1 2 3 4 5 6 7 8 9
array n = [?] [?] [?] [?] [?] [?] [?] [?] [?] [?]
所以你看到有10
个插槽,但由于它是从零开始的,所以没有索引10
。
现在,在下一行中,定义了这个循环:
for (i = 0; i < 11; i++) { ... }
只要0
保持低于i
,它就会从11
开始运行。实际上是从0
到10
。这是一个超过数组大小的迭代,这就是为什么最后一次迭代(当i==10
)崩溃时 - 删除和重写代码行的频率或缩进的深度并不重要。
loop i 0 1 2 3 4 5 6 7 8 9 10
array n = [?] [?] [?] [?] [?] [?] [?] [?] [?] [?] <- BAM!
答案 1 :(得分:0)
这是来自 Visual Studio 。 C#中有 no 缩进。
并将i<11
更改为i<10
以防止IndexOutOfRange异常。