c#using for循环写出一个数组

时间:2017-03-24 13:56:06

标签: c# arrays for-loop

我需要使用for循环写出我的数组。这是我的代码。我必须使用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;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

适合我。

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

打印您的阵列,它排序很好并且从最大到最小打印。

什么不起作用?

答案 1 :(得分: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();

对于将数组写入控制台,您应该使用cycle:

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