Usando Enum

4 respostas
osbornehell
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
 */import java.util.Random;
 
public interface Craps 
{
	
	
    public Random randomNumbers = new Random();
	
	
	public enum Status { CONTINUE, WON, LOST };
	
	public final static int SNAKE_EYES = 2;
	public final static int TREY = 3;
	public final static int SEVEN = 7;
	public final static int YO_LEVEN = 11;
	public final static int BOX_CARS = 12;
	
	public void play()
		{
		 int myPoint = 0;
		 Status gameStatus;
		 
		 int sumOfDice = rollDice();
		 
		 switch ( sumOfDice )
		 {
		 	case SEVEN: gameStatus = Status.WON;
		 	break;
		 	case YO_LEVEN: gameStatus = Status.WON;
		 		break;
		 	case SNAKE_EYES: gameStatus = Status.LOST;
		    	break;
		 	case TREY:gameStatus = Status.LOST;
		    	break;
		 	case BOX_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;
		 	 else 
		 		if( sumOfDice == SEVEN)
		 		gameStatus = Status.LOST;
		 		
		 }	
		 	
		 	if( gameStatus = Status.WON)
		 		System.out.println("Player wins");
		 	 else
		 		System.out.println("Player loses");
		 		
		 }
		 
	public int rollDice(){
		int die1 = 1 + randomNumbers.nextInt(6);
		int die2 = 1 + randomNumbers.nextInt(6);
	   
	   int sum = die1 + die2;
	   
	   System.out.printf("player rolled %d + %d = %d\n",
	   die1,die2,sum);
	   
	   return sum;
	}
  
}
/**
 * @(#)CrapsTest.java
 *
 * CrapsTest application
 *
 * @author 
 * @version 1.00 2009/8/23
 */
 
public class CrapsTest {
    
    public static void main(String args[]) {
    	
    Craps game = new Craps();
    game.play();
    }
}

4 Respostas

Diabo_Loiro

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

import java.util.Random;  
      
    public class Craps   {
         
         
       public Random randomNumbers = new Random();  
         
         
       public enum Status { CONTINUE, WON, LOST };  
         
       public final static int SNAKE_EYES = 2;  
       public final static int TREY = 3;  
       public final static int SEVEN = 7;  
       public final static int YO_LEVEN = 11;  
       public final static int BOX_CARS = 12;  
         
       public void play()  
           {  
            int myPoint = 0;  
            Status gameStatus;  
              
            int sumOfDice = rollDice();  
              
            switch ( sumOfDice )  
            {  
               case SEVEN: gameStatus = Status.WON;  
               break;  
               case YO_LEVEN: gameStatus = Status.WON;  
                   break;  
               case SNAKE_EYES: gameStatus = Status.LOST;  
                   break;  
               case TREY:gameStatus = Status.LOST;  
                   break;  
               case BOX_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;  
                else   
                   if( sumOfDice == SEVEN)  
                   gameStatus = Status.LOST;  
                     
            }    
                 
               if( gameStatus == Status.WON)  
                   System.out.println("Player wins");  
                else  
                   System.out.println("Player loses");  
                     
            }  
              
       public int rollDice(){  
           int die1 = 1 + randomNumbers.nextInt(6);  
           int die2 = 1 + randomNumbers.nextInt(6);  
            
          int sum = die1 + die2;  
            
          System.out.printf("player rolled %d + %d = %d\n",  
          die1,die2,sum);  
            
          return sum;  
       }  
       
   }

CrapsTest.java

public class CrapsTest {  
       
     public static void main(String args[]) {  
           
     Craps game = new Craps();  
     game.play();  
     }  
 }

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

taaqui

wtf? posta ae o codigo corrigido.

Criado 13 de setembro de 2009
Ultima resposta 16 de set. de 2009
Respostas 4
Participantes 4