一个不应该出现的缩进错误?

时间:2016-08-12 18:32:13

标签: c# c#-4.0 visual-studio-2012 c#-3.0 c#-2.0

我已经设定了一项任务,即创建一个随机生成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中进行编码。

2 个答案:

答案 0 :(得分:1)

我无意中偶然发现了这篇较老的帖子,我无法相信为什么每个人都在聊聊C#中的缩进而不是阅读代码并向Scott展示他遇到的问题。

好的,好在这里:

int [] n = new int[10];
for (i = 0; i < 11; i++)
{ ... }

创建一个大小为10的数组,就像这里......

int [] n = new int[10];

...使用10“广告位”创建并排列数组 - 从索引09。我将每个值写为?到这些插槽中,因为我不想将任何人与其他数字混淆:

index         0   1   2   3   4   5   6   7   8   9
array    n = [?] [?] [?] [?] [?] [?] [?] [?] [?] [?]

所以你看到有10个插槽,但由于它是从零开始的,所以没有索引10

现在,在下一行中,定义了这个循环:

for (i = 0; i < 11; i++) { ... }

只要0保持低于i,它就会从11开始运行。实际上是从010。这是一个超过数组大小的迭代,这就是为什么最后一次迭代(当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异常。