开发者社区> 问答> 正文

关于java数组的问题

首先是这样子的,我们作业时是一个打地鼠的小程序,模拟地鼠出现的样子。
我是先设定一个4x4的数组Array4,数组默认值全部设定为0.
然后设定两个随机变量row和col,范围都在0-3之间
然后把Arrayrow的值从设定为1,以表示地鼠出现的位置。
那接下来就是我想要问的地方;
如何把出现过的位置舍弃,就是希望接下来随机的row和col不要再重复出现同样的数字?
下面是代码片段

int i = new Random().nextInt(4);
int j = new Random().nextInt(4);
GameArray[i][j] = 1; //Susliks appears
。
。
。
for (int index = 0; index < 4; index++){
for (int index2 = 0; index2 < 4; index2++){

if ( GameArray[index][index2] == 1){
System.out.print("o ");
}else{
System.out.print("x ");
}
}
times++;
System.out.println();
}

因为要求是所有的位置都出现过1就结束程序。而我这样子每次循环都要上百次才能结束,所以我想问有没有什么办法可以控制循环次数在一定的范围内?比方说就是已经出现过的数组索引值就不再使用(比如说GameArray3 = 1,那么接下来希望的随机不要再出现3这样子,如果出现了就跳出index的 for循环体,重新下一次随机)有没有什么办法可以实现?

展开
收起
蛮大人123 2016-03-19 14:33:46 2848 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    你的问题有两个:1、出现的位置不允许再出现
    2、当所有的位置都为1的时候,程序完成(地鼠已经去过所有的地洞,而且没有重复)。
    如果你的问题是这样的话,答案如下:
    整个的思路:有一个地鼠类,地鼠类里面有一个创造位置的方法(跑的位置),方法是这样实现的:
    地鼠跑到一个位置的时候,将其位置赋给burrows数组且将值赋1,如果随机产生的位置是重复的话,那么就要检查burrows数组里的值是否都
    为1(地鼠跑过)。当然在检查的过程中,有地鼠没有跑过的(值为0),那么就要把值赋给rowIndex和colIndex,这是整个说明。
    注意事项:里面安全性还需自己验证

    import java.util.Random;
    
    public class Suslik {
    
    /**
     * 随机跑到位置
     * @param row 跑的范围的横坐标
     * @param col 跑的范围的纵坐标
     */
    public void createPosition(int row,int col){
    
        int [][] burrows  = new int[row][col];
    
        Random creatNum = new Random();
        //横坐标
        int rowIndex;
        //纵坐标
        int colIndex;
    
        boolean index = false;
        while(!index){
            rowIndex = creatNum.nextInt(row);
            colIndex = creatNum.nextInt(col);
            int sum = 0;
            if(burrows[rowIndex][colIndex] != 0){
                for(int m = 0;m<row;m++){
                    for(int n = 0;n<col;n++){
                        if(burrows[m][n] == 0){
                            sum = ++sum;
                            rowIndex = m;
                            colIndex = n;
                            break;
                        }
                        index = true;
                    }
                    if(sum !=0){
                        index = false;
                        break;
                    }
                }
            }
            burrows[rowIndex][colIndex] = 1;
            System.out.println("row:"+rowIndex+" ,col:"+colIndex);
        }
    }
    
    public static void main(String [] args){
        new Suslik().createPosition(4, 4);
    }
    }
    2019-07-17 19:08:13
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载