gpt4 book ai didi

java - 通过二维数组中随机生成的数字打印字符数

转载 作者:行者123 更新时间:2023-11-30 02:12:07 35 4
gpt4 key购买 nike

我想知道如何随机生成一个数字,然后让它将该数字打印为字符。这是我到目前为止所拥有的。

import java.util.Scanner;
public class Main
{
public static void main (String[] args){
Scanner scan = new Scanner(System.in);

int[][] ground = new int[12][12];
int mineNum;

System.out.print ("Please Enter an Integer");

int num = scan.nextInt();

if(num > -1 && num <145){
for (int i=0; i<ground.length; i++){
for (int j = 0; j < ground[i].length;j++){
ground[i][j] = mineNum;
}
}
}
}

我认为你肯定必须将随机 int 存储在变量中。但是从那里我想要用户输入的随机 int 并将其转换为 X',并将这些 x 随机输入到数组中,所以我必须将该数字转换为字符数,然后将其随机插入到该数组与另一个为?这个想法是看起来像这样,例如,假设mineNum是5,一旦打印成3x9网格,它就会看起来像这样。

0 0 0 0 X 0 X 0 0

0 0 X 0 0 0 0 0 0

0 0 0 0 X X 0 0 0

最佳答案

一种选择是在 2D 网格的维度内生成 5 个不同的随机数,它们代表 X。然后用 Os 填充其他所有内容。我生成 0 到 dim^2 - 1 之间的随机数。然后我将它们添加到一个集合中,直到达到所需的随机位置数。最后,我将这些数字转换为 x/y 尺寸,以将 X 放置到板上。

Scanner scan = new Scanner(System.in);

int dim = 5;
char[][] ground = new char[dim][dim];
Set<Integer> xSet = new HashSet<>();

System.out.print ("Please Enter an Integer");
int mineNum = scan.nextInt();

Random rand = new Random();
while (xSet.size() < mineNum) {
int randomNum = rand.nextInt(dim*dim);
xSet.add(randomNum);
}

// default everything to being Os
for (int r=0; r < dim; ++r) {
for (int c=0; c < dim; ++c) {
ground[r][c] = 'O';
}
}

// then overwrite with Xs
for (int num : xSet) {
int x = num % dim;
int y = num / dim;
ground[x][y] = 'X';
}

System.out.println(Arrays.deepToString(ground).replace("], ", "]\n").replace("[[", "[").replace("]]", "]"));

[O, O, O, O, O]
[O, O, O, X, X]
[O, O, X, O, O]
[O, O, X, O, O]
[O, O, O, X, O]

Demo

关于java - 通过二维数组中随机生成的数字打印字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49743969/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com