我需要在屏幕上为我的骰子绘制重启按钮,但是当使用for循环增强时,
public class DiceGameModel {
--------------------------------
-------------------------------
public void reset() {
this.playerNumber = 0;
for(PlayerModel player : players) {
player.reset();
}
}
-------------------------
----------------------------
}
netbean返回的对象无法转换为playermodel,是一个包含reset方法的类。
package dicemodel;
public class PlayerModel {
----------------------
--------------------
public void reset() {
this.numberOfRolls = 0;
this.score = 0;
this.tempScore = 0;
this.dieRoll = 0;
}
--------------------------
----------------------------
}
答案 0 :(得分:1)
更改
private List players;
到
private List<PlayerModel> players;
并更改
this.players = new ArrayList();
到
this.players = new ArrayList<PlayerModel>();
List
和ArrayList
是通用类。如果不在尖括号中给出类型信息,则不应使用它们。
答案 1 :(得分:0)
如果players
是ArrayList<PlayerModel> players = new ArrayList<>();
然后你的增强for循环应如下所示:
for(PlayerModel player:players){
player.reset();
}
使用标准for循环,它看起来像:
for(int i = 0; i < players.size(); i++){
players.get(i).reset();
//this can be written in two lines like this:
//PlayerModel tempModel = players.get(i);
//tempModel.reset();
}
在增强的for循环中,每次迭代都会返回一个可以直接使用的Object引用。在标准for循环中,您可以使用.get()方法迭代索引值,您可以使用它来访问ArrayList中的不同对象...