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手牌的球员已被处理。
谢谢。
答案 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;