迭代循环遍历类的所有对象

时间:2015-04-01 10:53:23

标签: java object

Java新手 - 我正在建立一个扑克计划,我创建了一个带有一些实例变量的玩家类,包括" toppair"," highcardst"等...我试图使用占位符变量,用于引用适当的播放器实例变量,而不是依赖于if语句。

int handsdealt=0;
int straightval=0;
String placeholder="blank";
player playerone = new player("Richard");
player playertwo = new player("Negreanu");
//code omitted
if (handsdealt==1) placeholder="playerone";
else placeholder="playertwo";
//code to determine if hand is a straight -if it is it sets straightval to 1
**if(straightval==1) placeholder.highcardst=straightHigh;**

我在最后一行收到错误 - 看起来java并不接受这种语法。从本质上讲,由于这只手是直的,我想追加" highcardst"的价值。 " n"的实例变量作为n手牌的球员已被处理。

谢谢。

4 个答案:

答案 0 :(得分:2)

您似乎在String变量中使用了placeholder,而您实际上想要引用player对象。

player playerone = new player("Richard");
player playertwo = new player("Negreanu");
//code omitted
player placeholder;
if (handsdealt==1) placeholder=playerone;
else placeholder=playertwo;
//code to determine if hand is a straight -if it is it sets straightval to 1
if(straightval==1) placeholder.highcardst=straightHigh;

此外,如果您遵循常规的Java代码约定,例如将类名的第一个字母大写(例如Player,而不是player),它将使您的代码更容易理解。

答案 1 :(得分:1)

你可以制作一个玩家列表,并根据需要从列表中获取玩家的实例。

List<player> players = new ArrayList<player>();
players.add(new player("Richard"));
players.add(new player("Negreanu"));
if(straightval==1) { 
    players.get(handsdealt).highcardst=straightHigh;
}

或类似的东西。

答案 2 :(得分:0)

我认为问题可能出在这个声明中:

placeholder.highcardst=straightHigh;

您已定义placeholder类型的String,因此名为highcardst的属性不存在。

答案 3 :(得分:0)

if(straightval==1) placeholder.highcardst=straightHigh;

错误就在这里。占位符为String类型而不是Player类型。将temp变量设为Player变量并赋值

Player placeholder;
if (handsdealt==1) placeholder=playerone;