iT邦幫忙

0

用不同的名子來代表訓練師 但當print(訓練師)卻會發現2人有一樣的收藏?

  • 分享至 

  • xImage

不好意思再度打擾了 想請教一下為何最後所print的倆人會有一樣的收藏阿? (目前在練習寫pokemon小遊戲的交易method 我是用Trainer (String Trainer_name,HashSet trainer_collection) 來代表一個訓練師(姓名,收藏) 然後寫的add跟remove都有測試過能正常增減pokemon)
下面附上檔案的google drive連結:
https://drive.google.com/open?id=1vvoaIEtyA-w36E-E7ZD8yvEoxjQk6_ih

by 剛學java3週的菜鳥

小魚 iT邦大師 1 級 ‧ 2019-10-28 08:54:28 檢舉
最好能附上文字的原始碼.
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
Rex Chien
iT邦新手 4 級 ‧ 2019-10-28 10:14:37
最佳解答

節錄部分的程式碼

public  class Trainer {
	public static HashSet<Monster> trainer_collection;
    
	public HashSet<Monster> getcollection() {
		return trainer_collection;
	}

	public static boolean addMonster (Monster monster) {
        if(Trainer.trainer_collection.contains(monster)) {
            System.out.println("Monster exits!!!");
            return false;
        }
        else {
            Trainer.trainer_collection.add(monster);
            System.out.println("Monster added !!");
            return true;
        }
    }

這一行你用了靜態成員 public static HashSet<Monster> trainer_collection;,所以每一個 trainer 實例都會參考到相同的 trainer_collection。應該要宣告成 priavte HashSet<Monster> trainer_collection;

我要發表回答

立即登入回答