Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

osbornehell

usando Enum

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

A primeira coisa errada é:

 

- Uma interface não pode implementar nenhum método. Para corrigir ou voce troca para class ou voce implementa os métodos em outra classe.

 

- Verifiquei também que há erros no uso de variáveis. O Java é case sensitive, voce precisa especificar o mesmo nome incluindo a caixa das letras. Ex:

sumOfDice e SumOfDice são variáveis diferentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se voce tivesse deixado public interface, teria que criar uma classe que implemente a interface.

Além disso os métodos da interface não teriam corpo e seriam automaticamente abastratos.

Voce não pode nunca dar um new numa interface, pode fazer isso somente em classes concretas.

 

Um pequeno exemplo:

 

interface

public interface Craps {    
    public void play();
}

implementação

public class ImplementaCraps implements Craps{ 
    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");
                 
         }
}

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

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, é só um exemplo.

Voce precisa declarar o outro método também.

 

implementação


import java.util.Random;


public class ImplementaCraps implements Craps{
    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 Random randomNumbers = new Random();


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

interface

public interface Craps {
    public void play();
    public int rollDice();
}

Tente com uma nova classe implementar essa interface e veja o que acontece.

 

Eu tentei roda assim como seu exemplo, porem não roudou.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.