Java 发电船

Java 发电船,java,random,while-loop,Java,Random,While Loop,我正在尝试创建一个函数,它将随机选择电脑飞船的位置,但它不能将它们放置在同一地点或其他玩家飞船上 对于棋盘,我有一个int[5][5]棋盘,其中0表示一个位置为空,1表示玩家船,2表示计算机船。我写了这个,但它一直冻结和崩溃的android工作室 boolean wrong = true; for(int i = 0; i < 5; i++){ while (wrong) { Random rand = new Ra

我正在尝试创建一个函数,它将随机选择电脑飞船的位置,但它不能将它们放置在同一地点或其他玩家飞船上

对于棋盘,我有一个int[5][5]棋盘,其中0表示一个位置为空,1表示玩家船,2表示计算机船。我写了这个,但它一直冻结和崩溃的android工作室

    boolean wrong = true;
    for(int i = 0; i < 5; i++){

        while (wrong)
        {
            Random rand = new Random();
            int x = rand.nextInt(4);
            int y = rand.nextInt(4);

            if(board[x][y] == 1 || board[x][y] == 2){
                wrong = true;
            }

            else {
                board[x][y] = 2;
                wrong = false;
            }
        }
布尔错误=true;
对于(int i=0;i<5;i++){
while(错)
{
Random rand=新的Random();
int x=兰特·耐克斯汀(4);
int y=兰特·奈克斯汀(4);
如果(线路板[x][y]==1 | |线路板[x][y]==2){
错=真;
}
否则{
董事会[x][y]=2;
错误=错误;
}
}

请注意,以下代码有问题:

int x = rand.nextInt(4);
int y = rand.nextInt(4);
这些调用中的nextInt()将提供以下值之一:0、1、2、3


该方法的参数不包含在内,并且您永远不会以矩阵中的board[4,y]或board[x,4]字段为目标。

在哪里创建board?这不可能是全部代码。您需要提供运行的内容。提供一个,您应该阅读
Random 35; nextInt(..)
如何处理该参数。
的目的是什么(int i=0;i<5;i++)
?删除它。另外,
rand
应该在循环之前初始化。不需要在每个循环上创建一个新的。@nicomp是的,很奇怪像OP这样的初学者没有在他/她的代码上应用正确的OOP设计。@Tom,我同意。board应该是一个board类的实例,该类的属性建模obj数组ects表示船舶对象可以到达的位置,那么应该有一个船舶类。我们有一个典型的“Has-a”关系情况。但在OP掌握该场景之前,她必须理解基本的2D整数数组。而不是问题的答案。