Problemas com Control Flow (Loop)

3 respostas
A

Olá pessoal,

Estou criando um programa simulando um caixa eletronico enquanto estudo control flow porque, sabe como é né, a prática que faz a experiência! :-o

Criei um programinha que tem 2 métodos, o Intro(); e o Saque();

Quando a intro é executada, um dos métodos possíveis a ser chamado pelo usuário é o saque.
Tudo roda normal da primeira vez, mas quando a Intro(); é executada novamente no final da operação de saque,
todos os métodos possíveis de ser invocados (Saque, Extrato, etc..) qualquer opção que se digite, o programa é finalizado
com sucesso :x

Vou colar só uma parte do código pra nao ficar cansativo para os amigos! Quem puder ajudar ae fico grato! []'s
import java.util.Scanner;

public class Switchandloopsimproved {

    static byte a, l, i;
    static short m, saldo = 5000;

    public static void main(String[] args) {
        Intro();
        IfIntro();




    }

    public static byte Intro() {
        Scanner intra = new Scanner(System.in);
        System.out.printf("Bem-Vindo ao caixa eletrônico do Banco do Brasil");
        System.out.println("\n");
        System.out.println("Escolha a sua Opção");
        System.out.println("\n");
        System.out.println("1 - Extrato");
        System.out.println("2 - Saque");
        System.out.println("3 - Empréstimo");
        System.out.println("4 - Fatura Cartão BB");
        return a = intra.nextByte();
    }

    public static void IfIntro(){
        if (a == 1)
            Extrato();
        else if (a == 2)
            Saque();
        else if (a == 3)
            Emprestimo();
        else{
            System.out.println("Escolha Inválida\nTente Novamente\n");
            Intro();}
    }

    
    public static void Saque() {
        Scanner sac = new Scanner(System.in);
        int[] anArray;
        anArray = new int[10];
        int c = 1, d = 25;
        byte e,x;
        anArray[c] = d;
        System.out.println("Escolha o Valor a ser Sacado");
        System.out.println(c + "  ---  R$"+ d);

        do {
            ++c;
            d += 25;
            anArray[c] = d;
            System.out.println(c + "  ---  R$" + d);
        } while (d == 25);


        do {
            ++c;
            d += 50;
            anArray[c] = d;
            System.out.println(c + "  ---  R$" + d);
        } while (d >= 50 && d < 199);


        do {
            ++c;
            d += 200;
            anArray[c] = d;
            System.out.println(c + "  ---  R$" + d);
        } while (d >= 200 && d < 1000);

        e = sac.nextByte();
        saldo -= anArray[e];
        System.out.println("Saque no valor de R$" + anArray[e] + "\nAguarde...\n");
        System.out.println("Operação Concluída com Sucesso");
        System.out.println("Deseja efetuar mais alguma operação?");
        System.out.println("1 --- Sim\n2 --- Não");
        x = sac.nextByte();
        if (x == 1)
            Intro();
        else if (x == 2){
            System.out.println("Obrigado por usar os nossos serviços");
            System.exit(0);
        }
}

3 Respostas

rafaelbortoletto

Você precisa usar um loop para que o programa exiba o menu novamente várias vezes até encerrar. no método main do seu programa você chama apenas o método Intro()

Fica assim o código

public static void Intro() {  
        Scanner intra = new Scanner(System.in);  
        
          do{
                
                System.out.printf("Bem-Vindo ao caixa eletrônico do Banco do Brasil");  
                System.out.println("\n");  
                System.out.println("Escolha a sua Opção");  
                System.out.println("\n");  
                System.out.println("1 - Extrato");  
                System.out.println("2 - Saque");  
                System.out.println("3 - Empréstimo");  
                System.out.println("4 - Fatura Cartão BB");
                System.out.println("5 - Sair do sistema");
 
                 a = intra.nextByte();
                 IfIntro();

         }while(a!=5);
    }  
  
    public static void IfIntro(){  
        if (a == 1)  
            Extrato();  
        else if (a == 2)  
            Saque();  
        else if (a == 3)  
            Emprestimo();  
        else{  
            System.out.println("Escolha Inválida\nTente Novamente\n");  
            Intro();}  
    }
A

Oi Rafael,

Vlw pela tentativa, mas nao deu certo. Eu até usei o Do While no restante do meu código e dá tudo certo, só que quando precisa repetir o método Intro() de novo, ele escreve tudo de novo certinho, mas na hora de chamar os métodos ele simplesmente encerra o programa como “Concluído com Sucesso”.
Já dei uma quebrada na cabeça e nao consegui matar essa ainda… quem puder ajudar ae fico grato.

vlwz!

rafaelbortoletto

Nos métodos em vez de encerrar o programa chame novamente a função Intro() no final de cada um deles. faça isso em todos os métodos como depósito, extrato, transferencia, etc.

Criado 6 de maio de 2011
Ultima resposta 6 de mai. de 2011
Respostas 3
Participantes 2