如何在' X'之间随机生成字符。和' O'?

时间:2014-07-04 04:33:16

标签: java random stringbuffer

public static String generate(){

    StringBuffer stringBuffer = new StringBuffer();
    for(int i = 0; i < TicTacToeUtil.NUM_OF_SPACES + 1; i++){
        for(int j = 0; j < TicTacToeUtil.NUM_OF_SPACES + 1; j++) {
            stringBuffer.append("1");
        }
        stringBuffer.append(" ");
    }
    String finalString = stringBuffer.toString();
    return finalString;
}

上面的代码基本上是一个游戏,NUM_OF_SPACES = 2,所以打印将是“111 111 111”,但是,我想用“X”或“O”替换所有1,这是随机选择的这两个字符。例如,“XOX XOO OOO”,这是随机生成的。提前致谢。

2 个答案:

答案 0 :(得分:2)

您可以使用Random#nextBoolean()方法随机获取truefalse。如果值为true,请附加'X。否则追加'O'

public static String generate()
{
    Random r = new Random(); // create a Random object
    StringBuilder stringBuilder = new StringBuilder();
    for (int i = 0; i < 2 + 1; i++) {
        for (int j = 0; j < 2 + 1; j++) {
            if (r.nextBoolean()) {  // r.nextBoolean() return 'true' or 'false'
                stringBuilder.append("X");
            } else {
                stringBuilder.append("O");
            }
        }
        stringBuilder.append(" ");
    }
    String finalString = stringBuilder.toString();
    return finalString; // return stringBuilder.toString();
}

答案 1 :(得分:0)

您可以使用Random类生成随机数。在这里,我使用Random类中的nextBoolean()方法随机生成布尔值。

public static String generate() {
    StringBuilder stringBuilder = new StringBuilder();
    Random r = new Random(); // create a Random object
    for (int i = 0; i <TicTacToeUtil.NUM_OF_SPACES+ 1; i++) {
        for (int j = 0; j <TicTacToeUtil.NUM_OF_SPACES + 1; j++) {
            if (r.nextBoolean()) {  // r.nextBoolean() return 'true' or 'false'
                stringBuilder.append("X");
            } else {
                stringBuilder.append("O");
            }
        }
        stringBuilder.append(" ");
    }
    String finalString = stringBuilder.toString();
    return finalString;
}

我选择TicTacToeUtil.NUM_OF_SPACES的值为2,输出如下,

XXX XOO XXX

我将StringBuffer替换为StringBuilder,这是常见做法。 (我认为StringBuffer类被复制了。)