用随机数 80-100 填充数组并使用以数组作为参数的方法打印两种不同的方式

Posted

技术标签:

【中文标题】用随机数 80-100 填充数组并使用以数组作为参数的方法打印两种不同的方式【英文标题】:Filling an array with random numbers 80-100 and printing two different ways using methods with arrays as parameters 【发布时间】:2021-05-13 13:22:18 【问题描述】:

我试图让两个数组保存 80 到 100 之间的 20 个随机值,但看起来它只是打印 System.Int32[]。它应该在 FillArray 方法中附加值,但我认为它不起作用。我可能已经盯着这个太久了,但我哪里错了?

using System;

class MainClass 
    public static void Main(string[] args) 
        int[] student1 = new int[20];
        int[] student2 = new int[20];
        FillArray(student1);
        FillArray(student2);

        Console.WriteLine("---------- Unsorted ----------");
        DisplayOutput(student1, student2);

        Sort2Arrays(student1, student2);

        Console.WriteLine("---------- Sorted ----------");
        DisplayOutput(student1, student2);

        Console.WriteLine("done");

     //end main
    public static void FillArray(int[] xArray) 
        Random rnd = new Random();
        for (int i = 0; i < xArray.Length; i++) 
            xArray[i] = rnd.Next(80, 101);
         //end for
    

    public static void Sort2Arrays(int[] xArray, int[] yArray) 
        Array.Sort(xArray);
        Array.Sort(yArray);
    

    public static void DisplayOutput(int[] xArray, int[] yArray) 
        foreach(int val in xArray) 
            Console.WriteLine("0-1", xArray, yArray);
         //end foreach
     //end display
 //end class

【问题讨论】:

Console.WriteLine("0-1",xArray,yArray); 这里 xArrayyArray 是数组。您可能想要val,尽管您根本没有循环yArray,所以不知道您希望该值来自哪里。你可能想要一个for 循环并通过索引访问这两个数组? 【参考方案1】:

DisplayOutput 方法错误,所以我将其替换为

public static void DisplayOutput(int[] xArray, int[] yArray) 
    for (int i = 0; i < 20; i++) 
        Console.WriteLine("0-1", xArray.GetValue(i), yArray.GetValue(i));
     

它可以正常工作

【讨论】:

【参考方案2】:

你应该改变你的 for 循环,现在你打印你的数组本身,你应该打印数组的元素:

public static void DisplayOutput(int[] xArray, int[] yArray) 
    for (var i = 0; i < xArray.Length; i++) 
        Console.WriteLine("0-1", xArray[i], yArray[i]);
    

我在那里使用了for 循环,因为您应该打印两个数组的元素。

P.S 这个for 循环只有在这些数组具有相同数量的元素时才是正确的。

更新

或者如果你想使用foreach循环你可以这样写:

public static void DisplayOutput(int[] xArray, int[] yArray) 
    var arrays = xArray.Zip(yArray, (i, j) = >new 
        x = i,
        y = j
    );
    foreach(var v in arrays) 
        Console.WriteLine("0-1", v.x, v.y);
    

使用Enumerable.Zip

【讨论】:

是的,这是最后一个让我搞砸的 for 循环,我什至没有看到它 - 谢谢!

以上是关于用随机数 80-100 填充数组并使用以数组作为参数的方法打印两种不同的方式的主要内容,如果未能解决你的问题,请参考以下文章

填充数组并使其可使用 Angular Material 过滤

用随机名称填充的字符串数组

用随机列表中的 2 个值填充 2D 数组(2048 游戏)

数组:部分填充

程序 | java 随机生成10个数,填充一个数组并计算数组的和

用二维数组 jQuery 填充表格