如何生成每个数字作为字符串或整数唯一的数字

时间:2014-04-04 15:50:59

标签: java

我尝试制作一个Android应用程序,目标是该玩家将与te计算机对战。第一个玩家将填写什么样的数字(可能是3或4位数)。

让我们说玩家选择3位数。比计算机生成一个数字,每个数字只能在数字中使用一次。像021,236,750 ......比玩家还要创造3位数。玩家将试图猜测计算机数字,计算机将尝试找到玩家数字。我尝试过类似的东西;

public static void main(String[] args) {
    ArrayList<String> fiNum = new ArrayList<String>();
    ArrayList<String> cijfer = new ArrayList<String>();
    cijfer.add("0");
    cijfer.add("1");
    cijfer.add("2");
    cijfer.add("3");
    cijfer.add("4");
    cijfer.add("5");
    cijfer.add("6");
    cijfer.add("7");
    cijfer.add("8");
    cijfer.add("9");

    System.out.println("Please enter digit length ");
    Scanner nummerOfChoise = new Scanner(System.in);
    String cooiseresult = nummerOfChoise.nextLine();
    int cc = Integer.parseInt(cooiseresult);

    for (int i = 0; i < cc; i++) {
        int getal = (int) (Math.random() * cijfer.size());
        fiNum.add(cijfer.get(getal));
        cijfer.remove(getal);
    }
    System.out.print(fiNum);
}

如果我想打印数字,它会输出类似

的内容
Please enter digit length
3
[3, 9, 1]

我的问题是将此数组转换为整数或字符串的最佳方法是什么,我该怎么做。

谢谢。

4 个答案:

答案 0 :(得分:2)

使用现有代码,最简单的可能是:

String drieCijfers = fiNum.get(0) + fiNum.get(1) + fiNum.get(2);

但最好不要将您的号码构建为字符串列表,而应将其作为intlong开头:

public static void main(String[] args) {
    ArrayList<Integer> cijfer = new ArrayList<Integer>();
    for (int i = 0; i <= 9; i++)
        cijfer.add(i);

    System.out.println("Please enter digit length ");
    Scanner nummerOfChoise = new Scanner(System.in);
    String cooiseresult = nummerOfChoise.nextLine();
    int cc = Integer.parseInt(cooiseresult);

    long fiNum = 0;
    for (int i = 0; i < cc; i++) {
        int getal = (int) (Math.random() * cijfer.size());
        fiNum = fiNum * 10 + cijfer.get(getal);
        cijfer.remove(getal);
    }
    System.out.print(fiNum);
}

答案 1 :(得分:1)

你可以做到

public static void printNumber(int length) {
    List<Integer> digits = new ArrayList<Integer>();
    for(int i = 0; i < 10; i++) digits.add(i);
    Collections.shuffle(digits);
    for(int i = 0; i < length; i++)
        System.out.print(digits.get(i));
    System.out.println();
}

洗牌就像洗牌一样,你只能画一次卡/数字。

答案 2 :(得分:0)

如何使用此线程解决方案How do I generate random integers within a specific range in Java?生成最小值和最大值之间的数字

然后将生成的值与计算机/播放器选择的值进行比较。你知道min,max应该是你可以用X位数(10 ^ X -1)得到的最大数字

答案 3 :(得分:0)

这是一个类似的问题,应该引导您朝着您需要的方向前进。

How can I read input from the console using the Scanner class in Java?