我正在构建一个用户定义的数组作为游戏板。字符使用“O”和“。”必须随机化,“O”必须出现不止一次。
这就是我到目前为止所做的。
import java.util.Scanner;
public class PacMan {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Input total rows:");
int row = input.nextInt();
System.out.println("Input total columns:");
int column = input.nextInt();
boolean[][] cookies = new boolean[row+2][column+2];
for (int i = 1; i <= row; i++)
for (int j = 1; j <= column; j++);
cookies [row][column] = (Math.random() < 100);
// print game
for (int i = 1; i <= row; i++)
{
for (int j = 1; j <= column; j++)
if (cookies[i][j]) System.out.print(" O ");
else System.out.print(". ");
System.out.println();
}
}
}
例如,输出产生一个5 x 5网格,但“O”只出现一次,位于网格的右下角。
协助随机化“O”和“。”并且在整个电路板上随机出现“O”,用户通过扫描仪输入初始化。
这是更新的代码,它产生我正在寻找并且是用户定义的输出。
import java.util.*;
public class PacManTest
{
public static void main(String[] args)
{
char O;
Scanner input = new Scanner(System.in);
System.out.println("Input total rows:");
int row = input.nextInt();
System.out.println("Input total columns:");
int column = input.nextInt();
char board[][] = new char[row][column];
for(int x = 0; x < board.length; x++)
{
for(int i = 0; i < board.length; i++)
{
double random = Math.random();
if(random >.01 && random <=.10)
{
board[x][i] = 'O';
}
else {
board[x][i] = '.';
}
System.out.print(board[x][i] + " ");
}
System.out.println("");
}
}
}
答案 0 :(得分:2)
主要问题是第一个循环中的拼写错误:
cookies [row][column] = (Math.random() < 100);
应该是
cookies [i][j] = (Math.random() < 100);
其次,Math.random()
返回大于或等于0.0且小于1.0 (doc)的值。所以,(Math.random() < 100);
永远都是真的。如果你想要一个O或50%的几率。使用方法:
cookies[i][j] = Math.random() < 0.5;
另外,不确定使用起始索引1
的动机是什么,但数组索引从0
开始。