Java 创建没有重复数字的宾果卡

Java 创建没有重复数字的宾果卡,java,Java,我需要帮助创建一个宾果卡,没有重复的号码。我还是Java编程的新手。到目前为止,这是我唯一的想法。我真的很感谢你们的帮助 import java.util.Arrays; import java.util.Random;` import static java.lang.System.out; public class Exercise { /** * @param args */ public static void main(String[] args) { Random r

我需要帮助创建一个宾果卡,没有重复的号码。我还是Java编程的新手。到目前为止,这是我唯一的想法。我真的很感谢你们的帮助

import java.util.Arrays;
import java.util.Random;`
import static java.lang.System.out;

public class Exercise {

/**
 * @param args
 */
public static void main(String[] args) {
    Random rd = new Random();       
    int[][] bingo = new int[5][5];
    String title = "B\tI\tN\tG\tO";

    out.print(title);
    for (int i = 0; i < bingo.length; i++) {
        out.println();
        int num = 1;
        for (int idx = 0; idx < bingo[i].length; idx++) {
            if (i == 2 && idx == 2) {
                out.print("X\t");
                continue;
            }
            out.print(rd.nextInt(15)+ num + "\t");
            num += 15;
        }

    }

}
导入java.util.array;
导入java.util.Random`
导入静态java.lang.System.out;
公开课练习{
/**
*@param args
*/
公共静态void main(字符串[]args){
随机rd=新随机();
int[][]宾果=新int[5][5];
字符串title=“B\tI\tN\tG\tO”;
打印(标题);
for(int i=0;i

}

将尚未提取的号码存储在列表中,然后随机添加到卡中。当您添加一个数字时,您会将其从列表中删除,这样它就不会再次被选中

像这样:

List<Integer> numbers = new ArrayList<Integer>() {{
    add(1);
    add(2);
    add(3);
    ...
    add(70);
}};

for (int x = 0; x < 5; x++) {
    for (int y = 0; y < 5; y++) {
        bingo[x][y] = numbers.get(numbers.remove(new Random().nextInt(numbers.size()));
    }
}
List number=new ArrayList(){{
增加(1);
增加(2);
增加(3);
...
增加(70);
}};
对于(int x=0;x<5;x++){
对于(int y=0;y<5;y++){
bingo[x][y]=numbers.get(numbers.remove(new Random().nextInt(numbers.size());
}
}

希望对您有所帮助。

将尚未记录的号码存储在列表中,然后将其随机添加到卡中。添加号码时,您会将其从列表中删除,这样就不会再次被选中

像这样:

List<Integer> numbers = new ArrayList<Integer>() {{
    add(1);
    add(2);
    add(3);
    ...
    add(70);
}};

for (int x = 0; x < 5; x++) {
    for (int y = 0; y < 5; y++) {
        bingo[x][y] = numbers.get(numbers.remove(new Random().nextInt(numbers.size()));
    }
}
List number=new ArrayList(){{
增加(1);
增加(2);
增加(3);
...
增加(70);
}};
对于(int x=0;x<5;x++){
对于(int y=0;y<5;y++){
bingo[x][y]=numbers.get(numbers.remove(new Random().nextInt(numbers.size());
}
}

希望这会有所帮助。

通常的做法是在列表中填入所有您想要使用的数字,然后使用
集合。shuffle
将其洗牌

private static class Bingo {

    final int[][] card;

    public Bingo(int size) {
        // Create it.
        card = new int[size][size];
        // Fill it with 1, 2, ... by
        // First create my seed list of all numbers I want.
        List<Integer> seed = new ArrayList<>(size * size);
        for (int i = 0; i < size * size; i++) {
            seed.add(i+1);
        }
        // Shuffle it.
        Collections.shuffle(seed);
        // Fold it into my card.
        for (int i = 0; i < seed.size(); i++) {
            card[i / size][i % size] = seed.get(i);
        }

    }

    @Override
    public String toString() {
        return Arrays.deepToString(card);
    }

}

public void test() {
    Bingo bingo = new Bingo(5);
    System.out.println(bingo);
}
私有静态类宾果{
最终int[][]卡;
公共宾果(整数大小){
//创造它。
卡片=新整数[大小][大小];
//用1,2,…填充它
//首先创建我想要的所有数字的种子列表。
列表种子=新的ArrayList(大小*大小);
对于(int i=0;i
执行此操作的常用方法是将要使用的所有数字填入列表,并使用
集合。shuffle
将其洗牌

private static class Bingo {

    final int[][] card;

    public Bingo(int size) {
        // Create it.
        card = new int[size][size];
        // Fill it with 1, 2, ... by
        // First create my seed list of all numbers I want.
        List<Integer> seed = new ArrayList<>(size * size);
        for (int i = 0; i < size * size; i++) {
            seed.add(i+1);
        }
        // Shuffle it.
        Collections.shuffle(seed);
        // Fold it into my card.
        for (int i = 0; i < seed.size(); i++) {
            card[i / size][i % size] = seed.get(i);
        }

    }

    @Override
    public String toString() {
        return Arrays.deepToString(card);
    }

}

public void test() {
    Bingo bingo = new Bingo(5);
    System.out.println(bingo);
}
私有静态类宾果{
最终int[][]卡;
公共宾果(整数大小){
//创造它。
卡片=新整数[大小][大小];
//用1,2,…填充它
//首先创建我想要的所有数字的种子列表。
列表种子=新的ArrayList(大小*大小);
对于(int i=0;i
您需要什么帮助?上面的代码中是否有任何错误/异常?没有错误。只是它会显示重复的数字。当我尝试运行代码时,会出现这种情况。如下所示:B I N G O 5 26 32 50 61 1 17 42 55 67 13 17 X 37 47 3 22 37 52 69 12 18 45 60 61,正如您所看到的,17显示两次。您可以添加所有记录N对列表进行编号并检查新随机数是否在列表中,是否只是获取一个新随机数。您需要什么帮助?上述代码中是否有任何错误/异常?没有错误。只是它将显示重复的数字。当我尝试运行代码时,这将出现。如下所示:BIN G 5 26 32 50 61 1 17 42 55 67 13 X 37 47 3 2237 52 69 12 18 45 60 61如您所见,17显示两次。您可以将所有获取的数字添加到列表中,并检查新随机数是否在列表中,如果它只是获取一个新随机数。您不必同时调用
get()
remove()
remove()
返回删除的元素。一个集合比一个列表更有意义,不是吗?同样,一个循环填充它比一百个手动调用
add
更有意义。您不必同时调用
get()
remove()
remove()
返回删除的元素。一个集合比一个列表更有意义,不是吗?同样,一个循环比一百次手动调用
添加
更有意义。