2013-04-14 37 views
-1

首先,我的代碼(縮短):矢量增加元素,但不久後刪除它

import java.util.Vector; 

public class GameField { 

    private Vector rooms = new Vector(); 

    public void generateRooms() { 
     for (int i = 0; i < 10; i++) { 
      rooms.add(new Room(x, y, width, height)); 
     } 
    } 
} 

我知道Vector類是通用的,但我們還沒有學會那些還沒有,我們應該使用這樣的。

當我調用方法generateRooms()時,它不會像預期的那樣添加十個房間,但每循環都會增加一個房間,並且在循環開始時再次移除房間。

最後,我只在Vector中有一個房間,而不是十個房間。

這是爲什麼?是否因爲我不使用泛型類型或其他原因導致此行爲?

+1

您的代碼看起來很好 - 你是如何檢查'rooms'結構的內容? –

+0

你能告訴我們Room類是什麼樣的嗎? – splungebob

+0

你試過調試你的代碼嗎?爲循環設置一箇中斷點,看看它究竟做了什麼? –

回答

0

我做generateRooms函數返回room載體,它的工作原理確定:

public class Room { 

    int x; 
    int y; 
    int width; 
    int height; 

    public Room(int x, int y, int width, int height) { 
     this.x = x; 
     this.y = y; 
     this.width = width; 
     this.height = height; 
    } 
} 
class Main { 

    private Vector rooms = new Vector(); 

    public Vector generateRooms() { 
     for (int i = 0; i < 10; i++) { 
      rooms.add(new Room(1 * i, 2, 3, 4)); 
     } 
     return rooms; 
    } 

    public static void main(String[] args) { 
     Main m = new Main(); 
     Vector r = m.generateRooms(); 
     for (int i = 0; i < 10; i++) { 
      Room room = (Room) r.get(i); 
      System.out.println(room.x + " " + room.y + " " + room.width + " " + room.height); 
     } 
    } 
}