Problemas com JOptionPane

ola pessoal, tudo certo?
Estou com um problema em JOptionPane, não consigo fazer aparecer, em um jogo, o nome do jogador falando se o mesmo ganhou ou perdeu o jogo

import javax.swing.JOptionPane;

public class CrapsTest {
	public static void main (String args[])
	{
		JOptionPane.showMessageDialog(null, "Pressione OK para começar o jogo");
	    final String name = JOptionPane.showInputDialog("Qual é o seu nome?");
		Craps game = new Craps();
		game.play();
	}

}

[code]import java.util.Random;
import java.util.Scanner;

import javax.swing.JOptionPane;

public class Craps {
private Random randomNumbers = new Random();

private enum Status { CONTINUE, WON, LOST};

private final static int SNAKE_EYES = 2;
private final static int TREY = 3;
private final static int SEVEN = 7;
private final static int YO_LEVEN = 11;
private final static int BOX_CARS = 12;
String name = null;

public void play()
{
	int myPoint = 0;
	Status gameStatus;
	
	int sumOfDice = rollDice();
	
	switch (sumOfDice)
	{
	case SEVEN:
	case YO_LEVEN:
		gameStatus = Status.WON;
		break;
		
	case SNAKE_EYES:
	case TREY:
	case BOX_CARS:
		gameStatus = Status.LOST;
		break;
		
		default:
			gameStatus = Status.CONTINUE;
			myPoint = sumOfDice;
			 System.out.printf("sua pontuação é %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)
	
		JOptionPane.showMessageDialog(null, "Jogador %s Wins ",name);
	else
		JOptionPane.showMessageDialog("Jogador %s loses",name);
	
	}

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

}[/code]

Acredito que o problema maior seja entre a linha 57 e 61, mas se não for me avisem. Pois não sei o que devo usar para conseguir ler a variavel name, como podem ver, entre wins e loses, usei mais de uma maneira já, e mesmo assim não consegui.

Desde já agradeço a ajuda de todos

att
Felipe Luna Scobar

Olá Socabar20, se eu entendi direito vc tem nessa linha:

JOptionPane.showMessageDialog(null, "Jogador %s Wins ",name);

e ai não tah imprimindo a variável ‘name’ do jogador?
se for esse o problema simples, faz assim:

 JOptionPane.showMessageDialog(null, "Jogador %s Wins "+name);

ou

se a variavel ‘name’ estiver null, presta atenção na sua Classe Principal vc está fazendo:

final String name = JOptionPane.showInputDialog("Qual é o seu nome?");   
Craps game = new Craps();   
game.play();

Agora olhe na sua Classe Craps nessa linha:

String name = null;

Quando vai imprimir vai ficar null, para resolver isso faz assim, na sua Classe CrapsTest:

 final String name = JOptionPane.showInputDialog("Qual é o seu nome?");
Craps game = new Craps(name); //passei o nome digitado do jogador para o construtor da classe Craps 
game.play();

Lá na sua Classe Craps cria o construtor recebendo o valor do atributo passado e atribui a variável interna ‘name’ da classe:

String name = null;

public Craps(String name) {
        this.name = name;
}

Pronto resolvido
Desculpe, se não compreendi a pergunta, mais foi o q deu a entender.

Bons estudos…

o problema era o que você entendeu mesmo, não consigo exibir o nome digitado pelo jogador, na frase “Jogador Felipe Wins”.

então cara, testei o que você falou, porém não rolou…segue abaixo o jeito que fiz com o código, se puder me falar se era realmente isso ou o que eu devo mudar:

[code]
import java.util.Random;
import javax.swing.JOptionPane;

public class Craps {
private Random randomNumbers = new Random();

String name = null;
   public Craps(String name) {  
   this.name = name;  
   }  

private enum Status { CONTINUE, WON, LOST};

private final static int SNAKE_EYES = 2;
private final static int TREY = 3;
private final static int SEVEN = 7;
private final static int YO_LEVEN = 11;
private final static int BOX_CARS = 12;

public void play()
{
	int myPoint = 0;
	Status gameStatus;
	
	int sumOfDice = rollDice();
	
	switch (sumOfDice)
	{
	case SEVEN:
	case YO_LEVEN:
		gameStatus = Status.WON;
		break;
		
	case SNAKE_EYES:
	case TREY:
	case BOX_CARS:
		gameStatus = Status.LOST;
		break;
		
		default:
			gameStatus = Status.CONTINUE;
			myPoint = sumOfDice;
			 System.out.printf("sua pontuação é %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)
	JOptionPane.showMessageDialog(null, "Jogador %s Wins " +name);  
	else
	JOptionPane.showMessageDialog(null, "Jogador %s Loses " +name);  
	
}

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

}[/code]

PS: agora o meu problema pelo menos pelo que aparece no programa, ficou no CrapsTest, pois o game não é reconhecido em lugar nenhum:

[code]
import javax.swing.JOptionPane;

public class CrapsTest {
public static void main (String args[])
{
JOptionPane.showMessageDialog(null, “Pressione OK para começar o jogo”);
final String name = JOptionPane.showInputDialog(“Qual é o seu nome?”);
Craps game = new Craps(name);

}

}[/code]

obrigado

Testa agora


import javax.swing.JOptionPane;

public class CrapsTest {

    public static void main(String args[]) {
        JOptionPane.showMessageDialog(null, "Pressione OK para começar o jogo");
        final String name = JOptionPane.showInputDialog("Qual é o seu nome?");
        Craps game = new Craps(name);
    }
}
/**
 * @author _________
 */
import java.util.Random;
import javax.swing.JOptionPane;

public class Craps {

    private Random randomNumbers;
    String name = null;
    private final static int SNAKE_EYES = 2;
    private final static int TREY = 3;
    private final static int SEVEN = 7;
    private final static int YO_LEVEN = 11;
    private final static int BOX_CARS = 12;

    public Craps(String name) {
        this.name = name;
        randomNumbers = new Random();
        play();
    }

    private enum Status {
        CONTINUE, WON, LOST
    };

    public void play() {
        int myPoint = 0;
        Status gameStatus;

        int sumOfDice = rollDice();

        switch (sumOfDice) {
            case SEVEN:
            case YO_LEVEN:
                gameStatus = Status.WON;
                break;

            case SNAKE_EYES:
            case TREY:
            case BOX_CARS:
                gameStatus = Status.LOST;
                break;

            default:
                gameStatus = Status.CONTINUE;
                myPoint = sumOfDice;
                System.out.printf("sua pontuação é %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) {
            JOptionPane.showMessageDialog(null, "Jogador %s Wins " + name);
        } else {
            JOptionPane.showMessageDialog(null, "Jogador %s Loses " + name);
        }

    }

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