2017-03-24 78 views
-2

我需要使用for-loop寫出我的數組。這是我的代碼。我必須用for循環來做這件事的原因是因爲它是用於學校項目,老師不接受其他任何東西。代碼現在正在做的事情是,它首先創建一個包含隨機數字的數組,並確保沒有重複數據,然後確保首先對數字進行排序。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

適合我。

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