Poligno 1 Denunciar post Postado Março 22, 2016 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
Poligno 1 Denunciar post Postado Março 23, 2016 [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
reebr 94 Denunciar post Postado Março 24, 2016 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