2017-03-24 19 views
-2

forループを使用して配列を書き出す必要があります。これは私のコードです。私がfor-loopでそれをしなければならない理由は、それが学校のプロジェクトのためであり、教師は何も受け入れないからです。コードが今行っているのは、最初に乱数を持つ配列を作成し、重複がないことを確認してから、大きな番号で最初にソートされていることを確認することです。c#forループを使用して配列を書き出す

int[] myArray = new int[20]; 

Random random = new Random(); 
bool isUnique; 

for (int i = 0; i < myArray.Length; i++) { 
    isUnique = false; 

    while (!isUnique) { 
     isUnique = true; 
     myArray[i] = random.Next(1, 100); 

     for (int j = 0; j < i; j++) { 
      if (myArray[i] == myArray[j]) { 
       isUnique = false; 
      } 
     } 
    } 
} 

bool isSorted; 
int change; 

for (int i = 0; i < myArray.Length; i++) { 
    isSorted = false; 

    while (!isSorted) { 
     isSorted = true; 

     for (int j = i + 1; j < myArray.Length; j++) { 
      if (myArray[i] < myArray[j]) { 
       change = myArray[j]; 
       myArray[j] = myArray[i]; 
       myArray[i] = change; 
       isSorted = false; 
      } 
     } 
    } 
} 
+3

あなたがすべきあなたの問題が何であるかを説明するために余分なテキストを使用しますか?何がうまくいかない? – musefan

+1

あなたはどこにでもそれを書いていません。また、あなたのコードが何をしているのか説明する必要がある場合は、一般的にはリファクタリングする必要があるかもしれないというヒントです。あなたのケースでは、例えば 'CreateArrayWIthRandomNumbers'や' SortArray'のような名前のついたメソッドにあなたのコードをカプセル化します。 –

答えて

0

Works for me。

for (var i = 0; i < myArray.Length; i++) 
{ 
    Console.WriteLine(myArray[i]); 
} 

配列を印刷します。配列はきれいに並べ替えられ、最大から最小まで印刷されます。

何が問題なのですか?

0

私はそれほど冗長の変形にあなたのコードを書き直しました:

int[] myArray = new int[20]; 
Random random = new Random(); 
int randomValue = 0; 

// Fill array 
for (int i = 0; i < myArray.Length; i++) 
{ 
    do randomValue = random.Next(1, 100); 
    while (myArray.Contains(randomValue)); 
    myArray[i] = randomValue; 
} 

// Sort array 
myArray = myArray.OrderByDescending(x => x).ToArray(); 

あなたはサイクルを使用する必要があり、書き込み配列がコンソールに用:

for (var i = 0; i < myArray.Length; i++) 
    Console.WriteLine(myArray[i] + " "); 

でも最高とそれほど冗長結果のためにあなたは、この使用する必要があります。

Console.WriteLine(string.Join(", ", myArray)); 

これを返します。

97、95、93、92、91、85、84、78、77、76、75、68、57、45、24、22、14、10、8、4

関連する問題