2016-12-05 13 views
-1

ランダムな文字ジェネレータを作成する際に問題があります。誰かが私を正しい方向に向けることができますか?C#ランダムなレタージェネレータを2D配列に配置する - 問題

は、私は、暗黙的にintに文字列を変換できませんエラー

を取得しています。

class Program 
{ 
    static void Main(string[] args) 
    { 
     string[,] Grid = new string[5,5]; 

     string[] randomLetter = new string[26] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; 

     for (int i = 0; i < Grid.GetLength(0); i++) 
     { 
      for (int j = 0; j < Grid.GetLength(1); j++) 
      { 
       Random rng = new Random(); 
       int nextRandom = rng.Next(0, 26; 
       string actualRandomLetter = randomLetter[nextRandom]; 
       Grid[i, j] = Grid[actualRandomLetter,actualRandomLetter]; 
      } 
     } 
    } 
} 
+0

を:ここで

は作品例ですか? – Yaman

+1

あなたのコードは 'rng.Next(0、26;')にコンパイルされません( ')'がないので、何がエラーの原因かはっきりしませんが、エラーははっきりしているはずです。 'string'を' int'に暗黙的に変換することはできません。文字列を配列インデクサーに渡しています( 'Grid [actualRandomLetter、actualRandomLetter]')。グリッド[i、j] = actualRandomLetter' –

+2

'Grid [actualRandomLetter、actualRandomLetter];'これはインデックスにある値を取得するために 'Grid [0,3]'のようなインデックスのための整数を必要とします'(0,3)'であるが、例えばGrid ["A"、 "A"] 'を渡していると意味がない。また、 'new Random()'を複数回構築しないで、 'rng.Next'を複数回呼び出すだけです。理由は[こちら](http://stackoverflow.com/questions/767999/random-number-generator-only-generating-one-random-number/768001#768001)を参照してください。 – Quantic

答えて

1

ActualRandomLeter文字列であり、あなたは文字列を使用して配列内の要素の位置(すなわち、MyArrayという[「こんにちは」])にアクセスすることができません。あなたが生成されたランダムな文字を持つ配列を移入しようとしている場合、これはトリックを行います:

あなたは1文字の文字列の5x5のグリッド、またはの5つの文字列の配列をしたい場合は
public static void Main(string[] args) 
    { 
     string[,] Grid = new string[5, 5]; 
     string[] randomLetter = new string[26] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; 
     Random rng = new Random(); 

     for (int i = 0; i < Grid.GetLength(0); i++) 
     { 
      for (int j = 0; j < Grid.GetLength(1); j++) 
      {     
       int nextRandom = rng.Next(0, 26); 

       string actualRandomLetter = randomLetter[nextRandom]; 

       Grid[i, j] = actualRandomLetter; 

      } 
     } 
    } 
+0

ありがとう!私はそれを働かせることができた。 – Joseph

0

わかりませんそれぞれ5文字。これらの間に大きな違いはありません。どちらも、i番目の行のj番目の文字を取得するためにgrid[i][j]を実行できるようになります。エラーを生成しているライン

// We'll output an array with 5 elements, each a 5-character string. 
var gridSize = 5; 
var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
var rand = new Random(); 
var grid = Enumerable.Range(0, gridSize) 
    .Select(c=>new String(
     Enumerable.Range(0, gridSize) 
     .Select(d=>alphabet[rand.Next(0, alphabet.Length)]) 
     .ToArray() 
    )).ToArray();