2015-04-01 3 views
0

Новое в 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

Пожалуйста, сообщите точную ошибку. – Carcigenicate

+0

вы не можете использовать переменную для объекта namae – Burusothman

+0

Похоже, вы пытаетесь использовать JSON в Java-коде. Самое близкое к тому, что вы пытаетесь сделать, это Map.put (..., ...); – ControlAltDel

ответ

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; 
} 

Или что-то в этом роде.

+0

Да, этот подход облегчает различное количество игроков - я могу иметь дело с большим количеством рук, так как есть элементы в ArrayList. –

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).

+0

Спасибо, я получил уведомление, чтобы инициализировать объект, поэтому мой код в строке 4 [player placeholder = null;] –

0

Я думаю, что проблема может быть в этом заявлении:

placeholder.highcardst=straightHigh; 

Вы определили placeholder типа String, поэтому свойство называется highcardst не существует.

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

Ошибка здесь. место хранения String type нет Player type. Внесите временную переменную в качестве переменной игрока и назначьте

Player placeholder; 
if (handsdealt==1) placeholder=playerone; 
Смежные вопросы