2016-08-12 10 views
-4

ランダムに10個のランダムな数字をランダムに生成するゲームを作成するタスクが設定されました。ユーザーにすぐにそれを表示し、次の数字が高いか低いかを覚えておいてください。インデントエラーはありませんか?

10個の変数のそれぞれに乱数を素早く割り当てるために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);のラインが明らかにインデント右ではない、とさえ、このサイトがそれを認識し、私はすべてを試してみました、スペースと明らかに4つのスペースの全ての数は動作しません。

私が手にエラーが

型「System.IndexOutOfRangeException」の未処理の例外ではSummerWorkTask2.exe で発生しました追加情報:インデックスが配列の範囲外でした。

ビジュアルスタジオは、その後、n [1] = rnd.Next91,13)の行を強調表示します。それは任意の使用がある場合は

、私は、Visual Studio 2012

+3

おそらく、インデントがPythonでどのように機能するかを考えているので、インデントが心配です。 C#では、インデントはコンパイル時または実行時にコードの機能に影響を与えません。インデントは、読みやすくするためにのみ重要です。 *あなたが何を持っているのか(あなたが説明していないもの)はインデントとは関係ありません。* – mmcrae

+1

@mmcrae VSオートインデントは構文炭鉱のカナリアになります。 –

+1

Visual Studioで "ctrl + k + d"を押すと、テキストを再整列/再インデントする必要があります。 –

答えて

0

これはVisual Studioのからであるにコーディングしています。 C#にはインデントがあります。 IndexOutOfRange例外を防ぐためにi<11からi<10に変更してください。

+0

SummerWorkTask2.exeで 'System.IndexOutOfRangeException'型の未処理の例外が発生しました 追加情報:インデックスが配列の境界外にありました。 –

+0

私の投稿を編集しました –

1

私はこの古いポストをかなり偶然見つけました。なぜコードを読んでスコットに彼が持っていた問題を示すのではなく、誰もがC#で字下げについてチャットしていたのです。

はオーケー、よくここにある:

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++) { ... } 

それは限りi11より低くとどまるよう0から実行されます。実際には0から10までです。これは配列のサイズよりも1回の反復であり、そのため、最後の反復(i==10)がクラッシュするのはそのためです。コード行を削除して書き換える頻度やインデントされた深さは関係ありません。

loop i  0 1 2 3 4 5 6 7 8 9 10 
array n = [?] [?] [?] [?] [?] [?] [?] [?] [?] [?]  <- BAM! 
関連する問題