Ir para conteúdo

Arquivado

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

Poligno

Pograma Banco.

Recommended Posts

Olá galera,tenho que fazer um código que simule um banco,verificar o saldo,retirar,sacar,alterar nome e endereço do usuário e etc.Bom estou com problemas na parte de alterar endereço e nome,eu fiz o código com um menu de opções,caso você escolha sacar ou depositar por primeiro e depois escolha entre alterar nome ou endereço não dá,ele ñ le a string respectiva,mas se eu escolher uma dessas opções antes de 'fazer uma transação financeira' da tudo ok(ao menos até onde testei). Procurando na internet li sobre um pequeno problema do java,que ele ñ le uma string depois de ler um int ou double, mas ñ achei uma solução que resolvesse meu código,alguém ai pode me dar uma mão?

 

Código principal:

package contacorrente_1;

import java.util.Scanner;

public class ContaCorrente_1 {
    
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Conta var = new Conta();
        
        System.out.println("Escolha uma das opções do menu a baixo:");
        System.out.println("1 - Conferir Saldo");
        System.out.println("2 - Depositar quantia");
        System.out.println("3 - Retirar quantia");
        System.out.println("4 - Alterar endereço");
        System.out.println("5 - Alterar nome");
        int op=scan.nextInt();
        
        switch(op){
            case 1:{System.out.println(var.saldo);//printa saldo
                    System.out.println("Deseja mais alguma coisa? 1-sim ; 2- não");//pede se quer fazer algo mais
                    op=scan.nextInt();
                    if(op==2) break;//se escolher ñ,aqui ele encerra o switch
                    else op=scan.nextInt();//caso contrário ele le uma opção do menu novamente
            }
            case 2:{var.depositar(args);System.out.println("o valor agora é "+var.saldo);
                    System.out.println("Deseja mais alguma coisa? 1-sim ; 2- não");
                    op=scan.nextInt();
                    if(op==2) break;
                    else op=scan.nextInt();
            }
            case 3:{var.retirar(args);System.out.println("o valor agora é "+var.saldo);
                    System.out.println("Deseja mais alguma coisa? 1-sim ; 2- não");
                    op=scan.nextInt();
                    if(op==2) break;
                    else op=scan.nextInt();
            }
            case 4:{var.alt_endereco(args);
                    System.out.println("Deseja mais alguma coisa? 1-sim ; 2- não");
                    op=scan.nextInt();
                    if(op==2) break;
                    else op=scan.nextInt();
            }
            case 5:{var.alt_nome(args);
                    System.out.println("Deseja mais alguma coisa? 1-sim ; 2- não");
                    op=scan.nextInt();
                    if(op==2) break;
                    else op=scan.nextInt();
            }    
        }
    }
    
}

A classe:

package contacorrente_1;

import java.util.Scanner;

public class Conta {
    Scanner scan = new Scanner(System.in);
    
    String nomecliente;
    String endereco;
    double saldo=0;
    
    public void depositar(String[] args) {
        
        System.out.println("digite um valor para depositar");
        saldo=saldo+scan.nextDouble();//soma deposito ao saldo
    }
    
    public void retirar(String[] args) {
        double aux;
        
        System.out.println("Digite a quantia para retirar");
        aux=scan.nextDouble();//le quantia que você deseja sacar
        
        //confere se há saldo o suficiente para o saque
        if(aux>saldo) System.out.println("você tem apenas "+saldo+" para sacar");
        else saldo=saldo-aux;
    }
    
    public void alt_nome(String[] args) {
        
        System.out.println("Digite o nome:");
        nomecliente=scan.nextLine();
        System.out.println(nomecliente);
                
    }
    
    public void alt_endereco(String[] args) {
        
        System.out.println("Digite o endereço:");
        endereco=scan.nextLine();
        System.out.println(endereco);
    }
}

 

Agradeço desde já!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

[Atualizando]

Resolvi o problema,era bem duvida de newbie msm(tinha que limpar o buffer) hahahaha, vou deixar o código caso alguém com a mesma duvida esbarre no tópico.

Alterei apenas os metodos da classe,pus o 'limpador' do buffer dentro dos metodos que trabalhavam com o tipo double:

package contacorrente_1;

import java.util.Scanner;

public class Conta {
    Scanner scan = new Scanner(System.in);
    
    String nomecliente;
    String endereco;
    double saldo=0;
    
    public void depositar(String[] args) {
        
        System.out.println("digite um valor para depositar");
        saldo=saldo+scan.nextDouble();//soma deposito ao saldo
        scan.nextLine();
    }
    
    public void retirar(String[] args) {
        double aux;
        
        System.out.println("Digite a quantia para retirar");
        aux=scan.nextDouble();//le quantia que você deseja sacarscan.nextLine();
        scan.nextLine();
        
        //confere se há saldo o suficiente para o saque
        if(aux>saldo) System.out.println("você tem apenas "+saldo+" para sacar");
        else saldo=saldo-aux;
    }
    
    public void alt_nome(String[] args) {
        
        System.out.println("Digite o nome:");
        nomecliente=scan.nextLine();
        System.out.println(nomecliente);
                
    }
    
    public void alt_endereco(String[] args) {
        
        System.out.println("Digite o endereço:");
        endereco=scan.nextLine();
        System.out.println(endereco);
    }
}

...PORÉM eu encontrei outro erro,ele está resolvendo os switch-case em sequencia,ignorando as condições que eu botei.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O "break" interrompe um bloco de instruções, no seu código só cai no break quando o valor de "op" for 2.

Por isso ele está atropelando a sequência que você determinou.

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.