Estou com dificuldade em uma atividade da faculdade, onde devo criar uma aplicação de imposto de renda…
meu problema está na parte de printar as informações`import java.util.Scanner;
import java.util.Arrays;
public class AplicacaoImpostoDeRenda {
publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in),inputstr=newScanner(System.in);Stringdescricao,nome,cpf;ImpostoDeRendaimposto;intoperacao,repeticao=0;doublerenda,valor,soma=0;Deducao[]deducao=newDeducao[3];while(repeticao==0){System.out.println(" _______________________________________________________\n"+"| |\n"+"| 1 - Incluir Dedução |\n"+"| 2 - Imprimir resumo da declaração de imposto de renda |\n"+"|________________________________________________________|");operacao=input.nextInt();switch(operacao){case1:System.out.println("Nome: ");nome=inputstr.nextLine();System.out.println("Cpf: ");cpf=inputstr.nextLine();System.out.println("Renda Anual: ");renda=input.nextDouble();imposto=newImpostoDeRenda(nome,cpf,renda);for(inti=0;i<3;i++){System.out.println("Descrição: ");descricao=inputstr.nextLine();System.out.println("Valor de dedução: ");valor=input.nextInt();soma=soma+valor;Deducaodeducoes=newDeducao(descricao,valor);deducao[i]=deducoes;imposto.inserirDeducao(deducao);}imposto.calculaImposto(soma);break;case2:System.out.println(imposto.toString());}}}
no caso no…
case 2: System.out.println(imposto.toString());
Veja bem, você esta trabalhando com o objeto imposto, logo se você quiser “printar” os atributos como: nome, cpf e renda etc… você deverá chamar o metodo Get de cada tributo, entende?
Por exemplo:
System.out.println(imposto.getImpostoAPagar);
O toString() é uma representação em texto do seu objeto… toString() de Object retorna o nome da classe mais uma representação hexadecimal do código de
hash do seu objeto…Para alterar este comportamento caso você queira imprimir algo significativo você pode sobrescrever este método
no seu objeto:
Você deve inicializar a variável ImpostoDeRenda imposto antes dos cases. Ou melhor, antes do Switch,
Pense o seguinte. Caso não entre em Case 1 a sua variável não será inicializada, certo? Logo, seu case 2 apresentará erro.
Na verdade você nem conseguirá rodar até que inicialize esta variável, pois o compilador irá acusar a não inicialização.
R
raphaeloneves1 like
É necessário garantir que uma variável local seja inicializada em todo o escopo do método. Se vc não entrar no caso 1, sua variável não foi inicializada.
uma sugestão seria colocar a variável fora
“Cafeeiro:
ImpostoDeRenda imposto;
ImpostoDeRenda imposto = null;
Resolve seu problema sem alterar o que já foi feito.