程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> random-關於java數組的問題,想來這邊問一下

random-關於java數組的問題,想來這邊問一下

編輯:編程綜合問答
關於java數組的問題,想來這邊問一下

首先是這樣子的,我們作業時是一個打地鼠的小程序,模擬地鼠出現的樣子。
我是先設定一個4x4的數組Array[4][4],數組默認值全部設定為0.
然後設定兩個隨機變量row和col,范圍都在0-3之間
然後把Array[row][col]的值從設定為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就結束程序。而我這樣子每次循環都要上百次才能結束,所以我想問有沒有什麼辦法可以控制循環次數在一定的范圍內?比方說就是已經出現過的數組索引值就不再使用(比如說GameArray[3][3] = 1,那麼接下來希望的隨機不要再出現[3][3]這樣子,如果出現了就跳出index的 for循環體,重新下一次隨機)有沒有什麼辦法可以實現?我剛接觸java的,好多都還不清楚

最佳回答:


你的問題有兩個:1、出現的位置不允許再出現
2、當所有的位置都為1的時候,程序完成(地鼠已經去過所有的地洞,而且沒有重復)。
如果你的問題是這樣的話,答案如下:
整個的思路:有一個地鼠類,地鼠類裡面有一個創造位置的方法(跑的位置),方法是這樣實現的:
地鼠跑到一個位置的時候,將其位置賦給burrows數組且將值賦1,如果隨機產生的位置是重復的話,那麼就要檢查burrows數組裡的值是否都
為1(地鼠跑過)。當然在檢查的過程中,有地鼠沒有跑過的(值為0),那麼就要把值賦給rowIndex和colIndex,這是整個說明。

注意事項:裡面安全性還需自己驗證

package action;

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);
}

}

mengxing951
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved