将随机值保存到2D数组中

时间:2018-12-18 10:10:19

标签: c# arrays

如何使用Random打印并在数组中保存随机值。
因此,我需要有10x10的行表,其中包含0到9之间的随机值,但是我似乎找不到一种方法来打印它们!

package matrix;
import java.util.Scanner;

public class Matrix {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter n: ");
        int n = input.nextInt();

          for (int x = 0; x < n; x++){
            for (int y = 0; y < n; y++){
                System.out.print((int)(Math.random() * 2)+ "");
            }
            System.out.println();
        }
    }
}

4 个答案:

答案 0 :(得分:1)

您的代码中有一个小问题:创建的数组有两个维度(int [9,9])。因此,无论何时要读取或写入单元格,都需要提供两个坐标。您只需设置mas [i]或mas [k]。

您应该在内循环中使用max[i,k]。这样,将尝试所有坐标组合。

不相关:您提到要使用10x10的单元格网格,但声明int[9,9]。虽然数组索引从0开始,但大小从1开始。例如,如果创建一个数组a = int [2],则它仅包含int [0]和int [1]处的条目。

类似地,Random.Next(...)函数的最大值参数是排他的,因此要获取值9,您需要传递最大值10。

答案 1 :(得分:0)

如果要 2D 数组(即您有两个坐标:线-i-j),嵌套循环是通常的选择:

    Random rand = new Random(); 

    int[,] mas = new int[9, 9];

    for (int i = 0; i < mas.GetLength(0); ++i) 
      for (int j = 0; j < mas.GetLength(1); ++j) 
        mas[i, j] = rand.Next(0, 10); // 10 will not be included, range [0..9]

让我们打印数组:

    for (int i = 0; i < mas.GetLength(0); ++i) { 
      for (int j = 0; j < mas.GetLength(1); ++j) {
        Console.Write(mas[i, j]);
        Console.Write(' '); // <- delimiter between columns
      }

      Console.WriteLine();  // <- delimiter between lines
    }

答案 2 :(得分:0)

此外,请注意mas.length返回数组的总长度,这将使您使用Code获得IndexOutOfRangeException。使用mas.GetLength而不是mas.length

myArray.GetLength(0)->获取第一个尺寸大小

myArray.GetLength(1)->获取第二维大小

因此您的代码应如下所示:

int[,] mas = new int[9, 9];
Random rand = new Random();
for (int i = 0; i < mas.GetLength(0); i++)
{
    for (int k = 0; k < mas.GetLength(1); k++)
    {
        mas[i, k] = rand.Next(0, 9);
        Console.Write(mas[i, k] + " ");
    }

    Console.WriteLine();
}

答案 3 :(得分:0)

大概是这样

int[,] mas = new int[10, 10];
        Random rand = new Random();
        for (int i = 0; i < mas.GetLength(0); i++)
        {
            for (int k = 0; k < mas.GetLength(1); k++)
            {
            mas[i,k] = rand.Next(0, 9);
            Console.Write(mas[i,k]);
            }
            Console.WriteLine("\n");
        }

您的代码有很多问题,

您不知道索引的工作方式-您想要10乘以10的数组,但创建9乘以9的数组。

向数组添加数字时,您需要同时指定两个尺寸。

也是

Consolo.Writeline(string);

将总是写新行,这是您不想要的,因为您要打印10个数字,然后再换一个新行,依此类推。