Ola pessoal estou tentando utilizar um exemplo do livro como programar 6, porem tem dado erro em dois metodos
play() e rollDice(), e quando declaro como private = public final static int SNAKE_EYES = 2; também da erro de sitaxe
o que estou fazendo de errado uso jdk 1.5.0
/** * @version 1.00 2009/8/23 */importjava.util.Random;publicinterfaceCraps{publicRandomrandomNumbers=newRandom();publicenumStatus{CONTINUE,WON,LOST};publicfinalstaticintSNAKE_EYES=2;publicfinalstaticintTREY=3;publicfinalstaticintSEVEN=7;publicfinalstaticintYO_LEVEN=11;publicfinalstaticintBOX_CARS=12;publicvoidplay(){intmyPoint=0;StatusgameStatus;intsumOfDice=rollDice();switch(sumOfDice){caseSEVEN:gameStatus=Status.WON;break;caseYO_LEVEN:gameStatus=Status.WON;break;caseSNAKE_EYES:gameStatus=Status.LOST;break;caseTREY:gameStatus=Status.LOST;break;caseBOX_CARS:gameStatus=Status.LOST;break;default:gameStatus=Status.CONTINUE;myPoint=sumOfDice;System.out.printf(" Point is %d\n",myPoint);break;}while(gameStatus==Status.CONTINUE){sumOfDice=rollDice();if(SumOfDice==myPoint)gameStatus=Status.WON;elseif(sumOfDice==SEVEN)gameStatus=Status.LOST;}if(gameStatus=Status.WON)System.out.println("Player wins");elseSystem.out.println("Player loses");}publicintrollDice(){intdie1=1+randomNumbers.nextInt(6);intdie2=1+randomNumbers.nextInt(6);intsum=die1+die2;System.out.printf("player rolled %d + %d = %d\n",die1,die2,sum);returnsum;}}
1 - Cara tu ta colocando codigos em uma interface amigo nao pode ter implementação em uma interface.
2 - Segundo ta cheios de erros de sintaxe.
3 - Se quer aprender enum pare de copiar e começe com exemplos menores.
aki vai o codigo rodando e corrigido
Craps.java
importjava.util.Random;publicclassCraps{publicRandomrandomNumbers=newRandom();publicenumStatus{CONTINUE,WON,LOST};publicfinalstaticintSNAKE_EYES=2;publicfinalstaticintTREY=3;publicfinalstaticintSEVEN=7;publicfinalstaticintYO_LEVEN=11;publicfinalstaticintBOX_CARS=12;publicvoidplay(){intmyPoint=0;StatusgameStatus;intsumOfDice=rollDice();switch(sumOfDice){caseSEVEN:gameStatus=Status.WON;break;caseYO_LEVEN:gameStatus=Status.WON;break;caseSNAKE_EYES:gameStatus=Status.LOST;break;caseTREY:gameStatus=Status.LOST;break;caseBOX_CARS:gameStatus=Status.LOST;break;default:gameStatus=Status.CONTINUE;myPoint=sumOfDice;System.out.printf(" Point is %d\n",myPoint);break;}while(gameStatus==Status.CONTINUE){sumOfDice=rollDice();if(sumOfDice==myPoint)gameStatus=Status.WON;elseif(sumOfDice==SEVEN)gameStatus=Status.LOST;}if(gameStatus==Status.WON)System.out.println("Player wins");elseSystem.out.println("Player loses");}publicintrollDice(){intdie1=1+randomNumbers.nextInt(6);intdie2=1+randomNumbers.nextInt(6);intsum=die1+die2;System.out.printf("player rolled %d + %d = %d\n",die1,die2,sum);returnsum;}}
Este livro é meio ruim para aprender isso.
Escolha um mais simples para começar.
t+
Polimorphism
Eu não acredito que o livro seja ruim, aprendi mt bem c/ esse livro. Só que tem que ler com calma, sem pressa. E pelo que me lembro esse exemplo vem antes de ensinarem a usar interfaces. Métodos de interfaces só podem conter métodos sem corpo( abstratos ).
if(SumOfDice==myPoint)
vc escreveu SumOfDice com s maiúsculo
if(gameStatus=Status.WON)
vc usou o operador de atribuição “=” ao invés do de comparação “==”
Mais boa sorte aí. Não desiste naum, e o livro dá pra aprender se tiver perseverança =). O Principal desse livro é não passar de capítulo se vc não entendeu alguma coisa.
Qualquer dúvida posta aí.
[]`s
Kelvin
osbornehell
Corrigi os erros apontados rodou, porem ficou um duvida para chamar public interface eu teria que ter declarado uma classe e chamado ela dentro do dessa interface ou apenas ter declarrado metodos public void Craps