-1

for ループを作成しようとしています。これにより、1000 個のオブジェクトが作成され、それらがランダムに生成されたスポット (x、y) に配置されます。これがコードです。私はこれに何時間も苦労しており、ネットからも検索していますが、それを行う方法が見つかりませんでした. そのループの後、それらのオブジェクトをある種のレーダーに追加しようとします。

コードは次のとおりです(問題は、ループから変数を取得してループの外に表示する方法がわからないことです):

case "look": {

        System.out.print("You are at: " +px +", " +py);
        System.out.println("");

        StringBuilder objects = new StringBuilder(); //That's something i found out form the net..
        while (objnum>=0){ objnum--;   //Creates randomly 1000objects around the map
        int objid = (int)(Math.random() * 11 + 1);    //int objnum is 1000, told above
        int objx = (int)(Math.random() * 10000 + 1);  
        int objy = (int)(Math.random() * 10000 + 1);}
        board.spawnObject(new BoardObject(objectid, objx, //That's something i found out form the net..
                    objy, objnum));

        for(int x=px-2 ; x< px+3 ; x++ ){ //px=player position
        for(int y=py-2 ; y< py+3 ; y++ ){ //this is how radar is created
        if(objid==1 && x==objx && y==objy){board[x][y]=1;}
        else if(objid==2 && x==objx && y==objy){board[x][y]=2;}
        else if(objid==3 && x==objx && y==objy){board[x][y]=3;} //That's where i need info from the loop..
        else if(objid==4 && x==objx && y==objy){board[x][y]=4;}
        else if(objid==5 && x==objx && y==objy){board[x][y]=5;}
        else if(objid==6 && x==objx && y==objy){board[x][y]=-1;}
        else if(objid==7 && x==objx && y==objy){board[x][y]=-2;}
        else if(objid==8 && x==objx && y==objy){board[x][y]=-3;}
        else if(objid==9 && x==objx && y==objy){board[x][y]=-4;}
        else if(objid==10 && x==objx && y==objy){board[x][y]=-5;}
            if(x==px && y==py){
                board[x][y]=6;}//<- this shows players position on radar
            if(board[x][y]==-1){
                System.out.print("[sto]");
            }else if(board[x][y]==0){
                System.out.print("[___]");//<- This works well..
            }else if(board[x][y]==-2){
                System.out.print("[box]");
            }
            else if(board[x][y]==-3){
                System.out.print("[ppl]");
            }
            else if(board[x][y]==-4){
                System.out.print("[pit]");
            }
            else if(board[x][y]==-5){
                System.out.print("[brk]");
            } //That's how radar shows dots/objects 
            else if(board[x][y]==1){
                System.out.print("[kid]");
            }
            else if(board[x][y]==2){
                System.out.print("[tre]");
            }
            else if(board[x][y]==3){
                System.out.print("[pet]");
            }
            else if(board[x][y]==4){
                System.out.print("[bus]");
            }
            else if(board[x][y]==5){
                System.out.print("[???]");
            }
            else if(board[x][y]==6){
                System.out.print("[You]");} //<- This works well..
        }
        System.out.println();
    }; }break;  
4

2 に答える 2

0

オブジェクトを格納するために Vector のような Collection インターフェイス クラスを使用するだけで、ループの外からそれらにアクセスできます

于 2013-03-24T17:48:56.473 に答える
0

スコープ外で変数を作成する必要があり、条件が真の場合は、ループ外で変数の値を変更する必要があります。

class example {
int number = 0;
.....

for (int i = 0; i < 10; i++) {
    if (i == 5) {
        number = 5;
    }
}

条件が true の場合、number は 5 になります。このデータを取得するには、getter と setter を作成します。

しかし、これらの 1000 個のオブジェクトすべてを 1 つのオブジェクトに格納する場合は、配列 (リスト) を使用することをお勧めします。

class Example {
ArrayList<Integer> object = new ArrayList<Integer>();

case.....
object.add(objx)
object.add(objy)
}
于 2013-03-24T17:53:05.610 に答える