Bom dia pessoal, meu problema consiste em que minha variavel, criada na classe Mae, e que esta sendo usada na classe filha e foi implementada nos metodos da classe filha, nao estao ocorrendo, nao consigo achar meu erro, irei postar as 2 classes (mae e filha)
importjava.util.*;publicclassContaBancaria{intagencia,nro;Dateabertura;protecteddoublesaldo;voidcreditar(doublevalor){//soma o valor passado ao saldosaldo+=valor;}voiddebitar(doublevalor){saldo=saldo-valor;}voidaplicarRendimentos(doublejuros){saldo=((juros/100)*saldo)+saldo;}doubleobterSaldo(){//retorna o saldo na conta, ou da conta poupança ou da conta corrente;returnsaldo;}}
Tirando o fato da classe ContaBancaria estar com o modificador faltando o p (deveria ser public e está ublic), não vejo outra razão para erro.
Qual o erro que está aparecendo no console?
A
andredecotia
Lí só o texto que vc escreveu o código ví por cima, não conseguí entender o que vc gostaria que acontecesse, ou se está ocorrendo erro.
paulo1911
Olá roskinha,
Qual a localização das classes em relação aos packages…
estão no mesmo pacote, estão em pacotes diferentes…
e Qual exatamante é o erro que ocorre? uma exception, o valor do saldo não bate com o teste real?..o que ocorre?
Já verificou o escopo da variavel na sua classe main?
Fallow
L
larback
O que está acontecendo exatamente?
Em relação ao comentário do colega sobre o modificador, não ha problema já que ela esta usando o protected.
R
roskinha
O "ublic" nao era o problema, haha esqueci na hora de postar aki !
Entao ja fiz a maioria das verificaçoes, irei postar minha main
importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannerentrada=newScanner(System.in);ContaBancariacontab=newContaBancaria();ContaPoupançacontap=newContaPoupança();ContaCorrentecontac=newContaCorrente();intopcP=0,juros=0;doubledebit=0,credit=0;do{System.out.println("Digite sua agencia");contab.agencia=entrada.nextInt();}while(contab.agencia<1000||contab.agencia>9999);do{System.out.println("Digite seu saldo atual");contab.saldo=entrada.nextDouble();}while(contab.saldo<=0);System.out.println("Sua agencia é "+contab.agencia+" Seu saldo inicial é "+contab.obterSaldo());intopc;do{System.out.println("Digite 1-ContaPoupança,2-ContaCorrente,3-ContaBancaria");opc=entrada.nextInt();}while(opc!=1&&opc!=2&&opc!=3);switch(opc){case1:do{System.out.println("Digite 1-debitar,2-Aplicar rendimentos");opcP=entrada.nextInt();}while(opcP!=1&&opcP!=2);if(opcP==1){System.out.println("Digite quanto deseja debitar");debit=entrada.nextDouble();contap.debitar(debit);}else{System.out.println("Digite quanto de juros sera aplicado");juros=entrada.nextInt();contap.aplicarRendimentos(juros);}System.out.println("O seu saldo atual é "+contab.obterSaldo());break;case2:do{System.out.println("Digite 1-debitar,2-Aplicar rendimentos");opcP=entrada.nextInt();}while(opcP!=1&&opcP!=2);if(opcP==1){System.out.println("Digite quanto deseja debitar");debit=entrada.nextDouble();contac.debitar(debit);}else{System.out.println("Digite quanto de juros sera aplicado");juros=entrada.nextInt();contac.aplicarRendimentos(juros);}System.out.println("O seu saldo atual é "+contab.obterSaldo());break;case3:do{System.out.println("Digite 1-debitar,2-Aplicar rendimentos,3-creditar");opcP=entrada.nextInt();}while(opcP!=1&&opcP!=2&&opc!=3);if(opcP==1){System.out.println("Digite quanto deseja debitar");debit=entrada.nextDouble();contab.debitar(debit);}if(opcP==2){System.out.println("Digite quanto de juros sera aplicado");juros=entrada.nextInt();contab.aplicarRendimentos(juros);}if(opcP==3){System.out.println("Digite quando deseja creditar");credit=entrada.nextDouble();contab.creditar(credit);}System.out.println("O seu saldo atual é "+contab.obterSaldo());break;}}}
Quando utilizo a classe ContaBancaria(mae) tudo ocorre como desejado, mais quando vou usar as classes filhas que esta ocorrendo o problema, acho que estou esquecendo algum conceito sobre herança
robertol
Acho que pode ser por causa da cedilha em Poupança! Acredito que este caractere não é válido para nomenclatura de classes!
R
roskinha
Creio que nao, pois nao esta acusando nenhum erro, e a classe ContaCorrente esta com o mesmo problema
robertol
Qual o problema? Cola um pedaço do log que está acusando o erro, por favor!
R
roskinha
Digite sua agencia
1234
Digite seu saldo atual
1000
Sua agencia é 1234 Seu saldo inicial é 1000.0
Digite 1-ContaPoupança,2-ContaCorrente,3-ContaBancaria
2
Digite 1-debitar,2-Aplicar rendimentos
1
Digite quanto deseja debitar
300
O seu saldo atual é 1000.0 // aqui deveria aparecer o saldo modificado pois escolhi debitar e declarei o valor
robertol
O seu erro é que no final de cada if de tipo de conta vc manda exibir o saldo de contab e não o saldo da conta modificada.
experimente colocar para exibir o valor da conta adequada após a operação!
A
andredecotia
Tem certeza de que está funcionando conforme vc descreve? Baixei suas classes e o resultado que estou tendo é diferente.
robertol
Altere seu switch para este!
switch(opc){case1:do{System.out.println("Digite1-debitar,2-Aplicarrendimentos");opcP=entrada.nextInt();}while(opcP!=1&&opcP!=2);if(opcP==1){System.out.println("Digitequantodesejadebitar");debit=entrada.nextDouble();contap.debitar(debit);}else{System.out.println("Digitequantodejurosseraaplicado");juros=entrada.nextInt();contap.aplicarRendimentos(juros);}System.out.println("O seu saldo atual é "+contap.obterSaldo());break;case2:do{System.out.println("Digite1-debitar,2-Aplicarrendimentos");opcP=entrada.nextInt();}while(opcP!=1&&opcP!=2);if(opcP==1){System.out.println("Digitequantodesejadebitar");debit=entrada.nextDouble();contac.debitar(debit);}else{System.out.println("Digitequantodejurosseraaplicado");juros=entrada.nextInt();contac.aplicarRendimentos(juros);}System.out.println("O seu saldo atual é "+contac.obterSaldo());break;case3:do{System.out.println("Digite1-debitar,2-Aplicarrendimentos,3-creditar");opcP=entrada.nextInt();}while(opcP!=1&&opcP!=2&&opc!=3);if(opcP==1){System.out.println("Digitequantodesejadebitar");debit=entrada.nextDouble();contab.debitar(debit);}if(opcP==2){System.out.println("Digitequantodejurosseraaplicado");juros=entrada.nextInt();contab.aplicarRendimentos(juros);}if(opcP==3){System.out.println("Digitequandodesejacreditar");credit=entrada.nextDouble();contab.creditar(credit);}System.out.println("O seu saldo atual é "+contab.obterSaldo());break;}