Erro Compilação - Variável não altera

5 respostas
TheViq

[color=darkred]Olha eu aqui denovo , tentando , pesquisando , enfim estudando muito de modo autodidata
(assim já deixo os motivos dos possíveis erros "medonhos" que poderão avaliar) :oops:

To assimilando a idéia de herança , poliformismo , OOP em geral e não sei o porque quando o saldoCliente é subtraído pela subSaldo o saldoCliente permanece com o mesmo valor Não sei se é porque esta ação deveria ser junto com a criação dos objetos através de método específico,ou é erro de lógica sequencial :x (o que seria imprudente da minha parte) Enfim , é algo "bobo" mas de grande conjunto de informação e esclarecimento para mim , então agradeço desde já ! :wink: [/color]
import java.util.Scanner;
public class objConta extends Conta{
	public static void main(String[]args){

Scanner ler = new Scanner (System.in);
	  
Conta novaConta = new Conta();
		
		novaConta.idCliente = 234235;
		novaConta.nomeCliente = "SawaKo";
		novaConta.saldoCliente = 134.00;
		novaConta.subSaldo = saldoCliente - subSaldo;
	
		System.out.println("Usuario: "+idCliente+"\nNome: "
		+nomeCliente+"\ncom Saldo: "+ saldoCliente);
				
		
		System.out.println("Digite Valor Sacado: ");
		subSaldo = ler.nextInt();
		
					
		System.out.println("Valor Atual: " + saldoCliente);
		 
		
		
		
		
			
		
		
	
	
	
	
	}
}

5 Respostas

C

Olha só, sua classe onde está o main, está extendendo a conta, certo?
As váriaveis saldoCliente e subSaldo, são da classe onde está seu main, e não da novaConta. Elas não devem estar inicializadas, e seu código não atribui nada a elas.
O que quero dizer, é que isso:

novaConta.subSaldo = saldoCliente - subSaldo

deve estar na verdade, executando isso:

novaConta.subSaldo = 0 - 0

Outra coisa é que você está executando o cálculo antes da leitura do teclado.
Seu código está bem confuso na verdade. :frowning:

Veja se essas dicas ajudam!
Desculpa a intromissão, mas, já que está estudando de forma autodidata, sugiro que pegue um livro, como Deitel por exemplo, ou outro que achar conveniente, e use como um guia. O aproveitamento será muito melhor.

J

Quando a JVM calcula essa operacao:

novaConta.subSaldo = saldoCliente - subSaldo
Ela na realidade esta fazendo:
0 - 0 = 0
Isso porque voce nao esta usando as variaveis da classe novaConta, mas as variaveis da classe principal.

Mesmo se voce estivesse usando as variaveis da classe:

novaConta.subSaldo = novaConta.saldoCliente - novaConta.subSaldo
A JVM iria realizar a seguinte operacao:
134 - 0 = 134
Pois, voce declarou a entrada do usuario depois que a operacao foi realizada. Assim a variavel novaConta.subSaldo so teve o valor alterado depois que a conta ja havia sido realizada.

O certo seria:

import java.util.Scanner;  
public class objConta extends Conta{  
    public static void main(String[]args){  
  
Scanner input = new Scanner (System.in);  
        
Conta conta = new Conta();  
          
        conta.idCliente = 234235;  
        conta.nomeCliente = "SawaKo";  
        conta.saldoCliente = 134.00;  
                   
        System.out.println("Saldo Atual: " + conta.saldoCliente);

        System.out.println("Digite  o valor a sacar: ");  
        conta.saque = Double.parseDouble(input.nextLine());  
  
        conta.saldoCliente -= conta.saque;  
      
 System.out.println("Identificador: "+ conta.idCliente+"\nNome: " + conta.nomeCliente+"\nSaldo Atual: R$"+ conta.saldoCliente + "\nValor do ultimo saque: R$" + conta.saque);  
      
    }  
}

Dica : Quando estiver trabalhando com valores monetarios, use sempre variaveis que aceitam ponto flutuante. São elas double, long, float, BigDecimal…

ViniGodoy

Por favor, não marque seus tópicos com o óbvio. Se está no fórum de Java Básico, obviamente o tópico é (Básico).

TheViq

[color=darkred] Opa iae gente boa! :smiley:
Beleza Cubo , obrigadão pela ajuda e não há intromissão não,
agradeço muito pelas dicas e direcionamento , vou ler este livro sim! ^^
Eu imagino que esteja um pouco confuso , porque sou newbie :cry:
que massa Johnny - agora entendi , eu havia mudado pra todo canto da 15 ~ 20
pensando que era erro na lógica em si , mas agora compreendo!

Aee deu certin - soh fiz uma “gambiarra” que não usei a linha 16 , não precisou de conversão
porque já tinha criado na SuperClasse com a variável de ponto flutuante(double)

Obrigadão mesmo pela paciência de todos e pelo auxílio de grande informação!
e Vini foi mal , não queria causar transtorno nenhum :shock: [/color]

TheViq

duplicação :frowning:

Criado 16 de abril de 2013
Ultima resposta 16 de abr. de 2013
Respostas 5
Participantes 4