如何在 Java 中自动填充数组。每个字符的特定数量

How to populate automatically an array in Java. With specific number of each character

我想用一定数量的每个字符自动填充这个数组。

例如 @ 有 30 个索引,% 有 20 个索引。 "empty" 数组将是 ..

public class Main {

    public static void main(String[] args) {
        char grid[][] = new char[20][40];
        Scanner move = new Scanner(System.in);
        System.out.println("Let's start playing:");
        System.out.println("---------------------------------------------------------------");
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[i].length; j++) {
                grid [i][j] = '.';
                System.out.print(grid[i][j]);
            }
            System.out.println();
        }
    }
}

我假设您想在整个数组中随机分布字符。我将继续假设值 30 和 20 是指导原则而非绝对值。 由于您有一个可以存储 800 个字符的 20x40 数组,其中应该有大约 750 个点和其他 50 个其他字符,因此分布将是 '.' 的 93.75%,'%' 的 2.5%和 3.75% '@'。使用 java.util.random 这样的东西可能是一个起点:

import java.util.Random;
....


public static void main(String[] args) {
    char grid[][] = new char[20][40];
    Scanner move = new Scanner(System.in);
    Random rand = new Random();
    System.out.println("Let's start playing:");
    System.out.println("---------------------------------------------------------------");
    for (int i = 0; i < grid.length; i++) {
        for (int j = 0; j < grid[i].length; j++) {
            double r = rand.nextDouble();
            grid [i][j] = r < 0.025 ? '%' : r < 0.0625 ? '@' : '.';
            System.out.print(grid[i][j]);
        }
        System.out.println();
    }
}