Ir para o conteúdo
alex_sk_4

ajuda a repetir o programa

Mensagens Recomendadas

alex_sk_4    0
alex_sk_4

boas, eu resolvi um exercicio de apostas com dados e queria criar um comando que me possibilite reiniciar o programa do console e assim o programa começa desde o inicio. ouvi dizer que era qualquer coisa com um ciclo while mas nao estou a conseguir fazer. abaixo coloco o codigo ja feito para facilitar a vossa ajuda:

import java.util.Scanner;

public class Exercicio6F4b {
public static void main(String[] args) {
	Scanner teclado = new Scanner(System.in);

	System.out.println("Qual o seu nome?");
	String nome = "";
	nome = teclado.nextLine();

	System.out.println("Insira o seu saldo:");
	int saldo = teclado.nextInt();

	System.out.println("Valor que pretende apostar:");

	int aposta = teclado.nextInt();
	if (aposta>saldo){
		System.out.println("A sua aposta não pode ser superior ao seu saldo.");
	return;
	}

	System.out.println("");

	System.out.println("Valores obtidos:");
	System.out.println("=====");

	Dado dado1 = new Dado();
	dado1.lancar();
	System.out.println(dado1.obterValor());
	int valorDado1 = dado1.obterValor();
	Dado dado2 = new Dado();
	dado2.lancar();
	System.out.println(dado2.obterValor());
	int valorDado2 = dado2.obterValor();

	System.out.println("=====");

	if (valorDado1 + valorDado2 == 7) {
		System.out.println("Ganhou " + aposta * 2 + " euros");
		saldo = saldo - aposta + (aposta*2);
		System.out.println("O seu saldo é de "+saldo+" euros");
	} else {
		System.out.println("Perdeu " + aposta + " euros");
		saldo = saldo - aposta;
		System.out.println("O seu saldo é de "+saldo+" euros");
	}




}
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
AngusYoung    5
AngusYoung

Um ciclo while deve resolver isso.

import java.util.Scanner;

public class Exercicio6F4b {
        public static void main(String[] args) {
                Scanner teclado = new Scanner(System.in);

while(saldo > 0){                

System.out.println("Qual o seu nome?");
                String nome = "";
                nome = teclado.nextLine();

                System.out.println("Insira o seu saldo:");
                int saldo = teclado.nextInt();

                System.out.println("Valor que pretende apostar:");

                int aposta = teclado.nextInt();
                if (aposta>saldo){
                        System.out.println("A sua aposta não pode ser superior ao seu saldo.");
                return;
                }
                
                System.out.println("");

                System.out.println("Valores obtidos:");
                System.out.println("=====");

                Dado dado1 = new Dado();
                dado1.lancar();
                System.out.println(dado1.obterValor());
                int valorDado1 = dado1.obterValor();
                Dado dado2 = new Dado();
                dado2.lancar();
                System.out.println(dado2.obterValor());
                int valorDado2 = dado2.obterValor();

                System.out.println("=====");

                if (valorDado1 + valorDado2 == 7) {
                        System.out.println("Ganhou " + aposta * 2 + " euros");
                        saldo = saldo - aposta + (aposta*2);
                        System.out.println("O seu saldo é de "+saldo+" euros");
                } else {
                        System.out.println("Perdeu " + aposta + " euros");
                        saldo = saldo - aposta;
                        System.out.println("O seu saldo é de "+saldo+" euros");
                }
           }     
                 
                
                
        }
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
alex_sk_4    0
alex_sk_4

AngusYoung, nao era bem isso. Tipo depois de eu correr o programa eu queria que houvesse uma parte que fizesse repetir o programa desde o inicio sem ter que voltar a correr ele outra vez.

Mas obrigado pela dica tambem vou precisar daquilo que puseste ali

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
KTachyon    272
KTachyon

Penso que percebo o que pretendes. O que tu queres é que o jogo decorra continuamente (pelo menos enquanto o utilizador tem saldo), mas queres que, a meio de tudo, o utilizador possa interromper o jogo actual para reiniciar o jogo, certo?

Uma solução óbvia, que não é exactamente o que pretendes (penso eu) é no final de cada jogada pedir ao utilizador se quer continuar, reiniciar ou terminar.

Outra solução, menos óbvia, mas ainda assim relativamente simples é, visto que o teu programa é baseado em inputs de valores inteiros, é definires um comando (com letras) e apanhares a excepção com um try-catch.

Outra solução seria, com uma thread a correr o código que fizeste, apanhares um interrupt dentro do programa e reiniciar a thread.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
alex_sk_4    0
alex_sk_4

sim isso.

edit:

pois mas destas todas que disseste a que eu quero é a "Uma solução óbvia, que não é exactamente o que pretendes (penso eu) é no final de cada jogada pedir ao utilizador se quer continuar, reiniciar ou terminar." como e que eu faco isso usando codigo java "while", "for" ou "if". tipo os mais basicos porque eu ainda nao dei muitos na escola. se vires que nao da para fazer com um desses deixem estar, mas postem como poderia ser feito para eu aprender sff

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
KTachyon    272
KTachyon

Eu diria para utilizares vários métodos, mas como disseste que não aprendeste muito vou deixar de parte por agora. O que tu queres é o seguinte:

bool termina = false;

while (!termina) { // enquanto a variável termina for false
    bool reset = false;
    // pedes o nome e o saldo ao utilizador
    while (!reset && !termina) { // enquanto as variaveis reset e termina forem false
        // o código a repetir (e não esquecer o que queres fazer quando o saldo baixar para zero)
        
        while (true) { //ciclo infinito -> só sai quando encontra um break
            System.out.println("Pretende (C)ontinuar, (R)einiciar ou (T)erminar?");
            // pedes ao utilizador um char, vou exe
            
            if (input == 'R' || input == 'r') { // se o char do utilizador for um R ou um r
                reset = true; // coloca o reset a true
                // faz com que o ciclo do !reset não continue a executar, voltando a pedir o nome e o saldo
                break; // sai deste loop infinito
            }
            else if (input == 'T' || input == 't') { // se for um T ou um t
                termina = true; // coloca a flag termina a true
                // faz com que nenhum dos dois primeiros loops continue a executar, terminando o programa
                break; // sai deste loop infinito
            }
            else if (input == 'C' || input == 'c') { // se for um C ou um c
                break; // sai deste loop infinito
            }
        }
    }
}

// programa termina

Só tens que completar.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade