Implemente uma classe Conta. Esta classe deve ter como atributo interno a informação
sobre o saldo da Conta (considere um valor double), o nome do proprietário da conta.
Implemente, um método depositar, um método s acar, um método para informar o saldo atual e
demais métodos que julgar necessários. Garanta, utilizando mecanismo de exceção, que não será
depositado um valor negativo na conta para depósito, utilizando a exceção
IllegalArgumentException. Já para o método sacar, garanta que não seja retirado um valor além do
limite da conta com EstouroDeLimiteException e, também, que não seja informado um saque
negativo, utilizando a IllegalArgumentException.
Crie um classe principal e no main crie um objeto da classe ContaBancaria solicite ao
usuário o nome do correntista e realize um depósito inicial.
Depois, enquanto o usuário desejar, solicite qual operação ele deseja realizar (depósito, saque,
saldo ou sair). Realize o tratamento de exceções correspondente a cada operação realizada.
publicclassConta<EstouroDeLimiteException>{Stringnome;doublesaldo;publicdoubledepositar(doublevalor){try{if(valor>0){valor+=saldo;}}catch(IllegalArgumentExceptione){System.out.println("Não é permitido números negativos!");}returnvalor;}publicbooleansacar(doublevalor)throwsException{if(valor>saldo){EstouroDeLimiteExceptionerro=(EstouroDeLimiteException)"Saldo insuficiente!";throw(Exception)erro;}try{if(valor>0){valor-=saldo;}}catch(IllegalArgumentExceptiona){System.out.println("Não é permitido saque negativo!");}returntrue;}publicvoidinformarSaldo(){System.out.println("O saldo atual é "+saldo);}publicStringgetNome(){returnnome;}publicvoidsetNome(Stringnome){this.nome=nome;}publicdoublegetSaldo(){returnsaldo;}publicvoidsetSaldo(doublesaldo){this.saldo=saldo;}}
Classe principal:
importjavax.swing.JOptionPane;publicclassSistema{ContaBancariacc=newContaBancaria();publicvoidimprimirMenu(){JOptionPane.showMessageDialog(null,"\n\n :: Sistema Bancário :: ");JOptionPane.showMessageDialog(null,"0 - Sair");JOptionPane.showMessageDialog(null,"1 - Depositar Conta Corrente");JOptionPane.showMessageDialog(null,"2 - Sacar Conta Corrente");JOptionPane.showMessageDialog(null,"3 - Informar Saldo");JOptionPane.showInputDialog("\nDigite sua opcao:");}publicSistema(doublevalor)throwsException{while(true){imprimirMenu();intopcao;switch(opcao){case0:JOptionPane.showMessageDialog(null,"Saindo...");System.exit(0);break;case1:JOptionPane.showInputDialog("Digite o valor do deposito:");cc.depositar(cc.depositar(0));JOptionPane.showInputDialog("Deposito efetuado com sucesso!!!");break;case2:try{JOptionPane.showInputDialog("Digite o valor do saque :");cc.sacar(valor);}catch(ClassCastExceptionc){}break;case3:cc.informarSaldo();break;default:System.out.println("Opção invalida!");break;}}}}publicstaticvoidmain(String[]args)throwsException{// TODO Auto-generated method stubnewSistema();}}
thundercas
Ricardo, faltaram 2 coisas:
Utilize as tags para formatação do código, pois bagunçado deste jeito 10% das pessoas que acessarem o tópico terão paciência de ler;
Ainda não ficou clara a sua dúvida. Você não está achando que alguém vai pegar o código do jeito que está, implementar tudo o que está faltando e te enviar, certo???
R
Ricardo_Oliveira
Como faço para utilizar as tags de formatação?
A questão é a seguinte:
Não estou conseguindo chamar os métodos corretamente. Sempre estar dando erro.
Ele explica como deve postar seu código corretamente, da forma como está fica bem complicado.
Poste seu código juntamente com o stack trace ok?
Abraços.
R
Ricardo_Oliveira
Consegui formatar o código…
Agora ainda não estou conseguindo acessar os métodos das exceções corretamente.
E a variável opção da classe principal estar dando erro, pois pede para inicializar a variável, porém quando a inicializo
atribuindo um valor zero ela não dar acesso ao switch.
thundercas
Ricardo,
Você está utilizando o Switch em uma variável que não foi inicializada… Dê um valor para a variável opção e funcionará.
nel
Isso acontece porque você não atribui nenhum atributo para receber a opção selecionada pelo usuario correto?
Mude o método imprimiMenu() de void para int. Crie uma variavel int dentro deste método que recebe a opção que o usuario digitou e retorne esse valor ao seu método que utiliza o switch. Entendeu?
Foi feito isso, agora não estou conseguindo chamar os métodos da classe conta corretamente,
tem alguma dica?
marcosvidolin
Voce pode criar as suas próprias exceções, talvez o exercício seja para esse fim. =]
Estudo um pouco de exceções ou exceptions do Java e como são criadas.
thundercas
Ricardo, por que não consegue???
Os métodos são públicos e a variável cc foi inicializada corretamente, deveria funcionar… Qual problema está ocorrendo??
R
Ricardo_Oliveira
Certo nel fiz isso.
Porém, o seguinte techo estar com erro.
returnopc;
thundercas
Ricardo, toda vez q der erro, já posta dizendo qual é o erro.
R
Ricardo_Oliveira
O código da classe principal agora estar da seguinte forma:
importjavax.swing.JOptionPane;publicclassSistema{ContaBancariacc=newContaBancaria();publicintimprimirMenu(){JOptionPane.showMessageDialog(null,"\n\n :: Sistema Bancário :: ");JOptionPane.showMessageDialog(null,"0 - Sair");JOptionPane.showMessageDialog(null,"1 - Depositar Conta Corrente");JOptionPane.showMessageDialog(null,"2 - Sacar Conta Corrente");JOptionPane.showMessageDialog(null,"3 - Informar Saldo");Stringopc=JOptionPane.showInputDialog("\nDigite sua opcao:");returnopc;}publicSistema(doublevalor)throwsException{while(true){intopcao=imprimirMenu();switch(opcao){case0:JOptionPane.showMessageDialog(null,"Saindo...");System.exit(0);break;case1:JOptionPane.showInputDialog("Digite o valor do deposito:");cc.depositar(cc.depositar());JOptionPane.showInputDialog("Deposito efetuado com sucesso!!!");break;case2:try{JOptionPane.showInputDialog("Digite o valor do saque :");cc.sacar(opcao);}catch(ClassCastExceptionc){}break;case3:cc.informarSaldo();break;default:System.out.println("Opção invalida!");break;}}}publicstaticvoidmain(String[]args)throwsException{// TODO Auto-generated method stubnewSistema();}}
E os erros apontados pelo o eclipse são os seguintes:
returnopc;
em cc.depositar(cc.depositar());
e em: new Sistema();
WendersonLP
Olha aqui implementei uns métodos que acho que é o que você está querendo.
Aqui eu criei a classe que lança uma exception caso o valor saque seja maior que o do saldo
publicclassBurstOfLimitExceptionextendsRuntimeException{publicBurstOfLimitException(Stringexception){super(exception);}publicBurstOfLimitException(){this("Burst of Limit!");}}
Acho que isso já basta para que você conclua a sua aplicação.
R
Ricardo_Oliveira
Obrigado a todos que colaboraram…
Consegui resolver a questão com a ajuda de um colega.
Até mais.
nel
Boa noite.
Ricardo, você prestou atenção ao erro? Você diz na assinatura do seu método que o tipo de retorno é um int mas tu estás retornando uma string.
Veja:
publicintimprimirMenu(){JOptionPane.showMessageDialog(null,"\n\n::SistemaBancário::"); JOptionPane.showMessageDialog(null, "0-Sair"); JOptionPane.showMessageDialog(null, "1-DepositarContaCorrente"); JOptionPane.showMessageDialog(null, "2-SacarContaCorrente"); JOptionPane.showMessageDialog(null, "3-InformarSaldo"); //aqui está o seu errro //String opc = JOptionPane.showInputDialog("\nDigitesuaopcao:"); //comente a linha acima como estou fazendo e altere para: int opc = JOptionPane.showInputDialog("\nDigitesuaopcao:");returnopc;}