如何使用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();
}
}
}
答案 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个数字,然后再换一个新行,依此类推。