Справка CoinFlipGame.. Введите True в операторе if

Это игра, которую я пытаюсь сделать. Вы начинаете игру с 1500 долларов, и каждый раз, когда вы хотите играть в игру, вы должны платить 100 долларов. (выберите 1, чтобы играть) (нажмите 2, чтобы прочитать правило) (нажмите 3, чтобы увидеть рекорды) . В начале игры в банке 4 доллара. Когда выпадает решка, деньги в банке удваиваются, и вы снова бросаете карты. Когда выпадет решка, вы получите все деньги в банке. Когда у вас меньше 100 долларов, вы разорены (игра окончена). Вы возвращаетесь в начальное меню... И я хочу сделать так, чтобы эта игра зафиксировала ваши самые высокие деньги (высокий балл). Вот что я получил до сих пор...

public class COINFLIP
{
public static void main(String[] args)
{
int tail = 0;//tail
int head = 0;//head
int x = 0;//tries
while (x < 1)
{
    int coin;//coin
    coin = (int) (Math.random() * 2);
    x++;
    if (coin == 0) {
    headCount++; // int type
    wasHeads = true; // boolean type
    wasTails = false;
  } else {
    tailCount++;
    wasHeads = false; // boolean type
    wasTails = true;
 }
    int sm = 1500;//starting money
    int cm;//current money
    int pm = 4;//money in the pot
    cm = sm - 100 + pm;
}
if (wasHeads)
{
pm = pm * 2;
}
else if (wasTails)
{
System.out.println("Your money is: $" + cm);
}
if (cm < 100);
System.out.println("Sorry, but you are broke!!!");
}
}

ошибки:

C:\Users\Loyal Xie\Documents\COINFLIP.java:14: error: cannot find symbol
    headCount++; // int type
    ^
symbol:   variable headCount
location: class COINFLIP
C:\Users\Loyal Xie\Documents\COINFLIP.java:15: error: cannot find symbol
    wasHeads = true; // boolean type
    ^
symbol:   variable wasHeads
location: class COINFLIP
C:\Users\Loyal Xie\Documents\COINFLIP.java:16: error: cannot find symbol
    wasTails = false;
    ^
symbol:   variable wasTails
location: class COINFLIP
C:\Users\Loyal Xie\Documents\COINFLIP.java:18: error: cannot find symbol
   tailCount++;
   ^
symbol:   variable tailCount
location: class COINFLIP
C:\Users\Loyal Xie\Documents\COINFLIP.java:19: error: cannot find symbol
    wasHeads = false; // boolean type
    ^
symbol:   variable wasHeads
location: class COINFLIP
C:\Users\Loyal Xie\Documents\COINFLIP.java:20: error: cannot find symbol
    wasTails = true;
    ^
symbol:   variable wasTails
location: class COINFLIP
C:\Users\Loyal Xie\Documents\COINFLIP.java:27: error: cannot find symbol
if (wasHeads)
    ^
symbol:   variable wasHeads
location: class COINFLIP
C:\Users\Loyal Xie\Documents\COINFLIP.java:27: error: illegal start of type
if (wasHeads)
   ^
C:\Users\Loyal Xie\Documents\COINFLIP.java:29: error: cannot find symbol
pm = pm * 2;
^
symbol:   variable pm
location: class COINFLIP
C:\Users\Loyal Xie\Documents\COINFLIP.java:29: error: cannot find symbol
pm = pm * 2;
     ^
symbol:   variable pm
location: class COINFLIP
C:\Users\Loyal Xie\Documents\COINFLIP.java:31: error: cannot find symbol
else if (wasTails)
         ^
symbol:   variable wasTails
location: class COINFLIP
C:\Users\Loyal Xie\Documents\COINFLIP.java:31: error: illegal start of type
else if (wasTails)
        ^
C:\Users\Loyal Xie\Documents\COINFLIP.java:33: error: cannot find symbol
System.out.println("Your money is: $" + cm);

                                        ^
symbol:   variable cm
location: class COINFLIP
C:\Users\Loyal Xie\Documents\COINFLIP.java:35: error: cannot find symbol
if (cm < 100);
    ^
symbol:   variable cm
location: class COINFLIP
14 errors

Но есть много ошибок, и мое утверждение все еще ошибочно... я думаю, что проблема в операторе if, и я думаю, что у меня все еще возникают проблемы с установкой head = true, а затем использовать его в операторе if.... Какие-нибудь мысли?


person Loyal Xie    schedule 01.09.2014    source источник
comment
Какие ошибки?   -  person Code-Apprentice    schedule 01.09.2014
comment
Вы объявили head как int, поэтому вы не можете назначить его true.   -  person Code-Apprentice    schedule 01.09.2014
comment
Каковы правила вашей игры? Это (cm = sm - 100 + pm;) неправильно. Но мне нужно знать правила, чтобы исправить это.   -  person Elliott Frisch    schedule 01.09.2014
comment
Если вы отформатируете свой код, ошибки станут намного более очевидными. Потратьте некоторое время на сопоставление скобок {} и правильный отступ каждого блока.   -  person trooper    schedule 01.09.2014


Ответы (2)


Вы присваиваете своим логическим значениям не соответствующие тестовые примеры (и вам действительно следует предпочесть простой else). Так что-то вроде,

if (coin == 0) {
  headCount++; // int type
  wasHeads = true; // boolean type
  wasTails = false;
} else {
  tailCount++;
  wasHeads = false; // boolean type
  wasTails = true;
}
person Elliott Frisch    schedule 01.09.2014
comment
Вам нужно где-то объявить boolean wasHeads = false; и boolean wasTails = false;. Укажите, какая ошибка все еще возникает. - person Elliott Frisch; 01.09.2014

Если вы исправили свой отступ, вы можете заметить, что с

if (coin == 0)  
{
    headCount++; // int type   
}
    wasHeads = true; // boolean type

wasHeads НЕ находится в операторе if и будет выполняться в 100% случаев. То же самое верно и для wasTails = true;

Это означает, что в дальнейшем ваше тестирование для if (wasHeads) всегда будет выполняться.

Кроме того, зачем это в цикле while, поскольку он будет выполняться только один раз.

Изменить

Что касается ваших ошибок, вам нужно определить переменные, прежде чем вы сможете их использовать.

Например

headCount++; 

Сначала необходимо определить как

int headCount = 0;
person Scary Wombat    schedule 01.09.2014
comment
Я вижу ваше решение и ваше предложение ... Смысл моего кода в том, чтобы продолжать подбрасывать монету, пока не дойдете до решки и не выиграете все деньги в банке ... И у вас есть деньги, вы продолжаете играть. поэтому код должен выполняться снова и снова. У вас есть идеи, что я могу изменить свой код на что-то подобное... - person Loyal Xie; 01.09.2014
comment
замените while (x < 1) на while (true), а затем, когда вы reach tail and you gain all the money in the pot, вы будете break; - person Scary Wombat; 02.09.2014