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 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in),
inputstr = new Scanner(System.in);
String descricao, nome, cpf;
ImpostoDeRenda imposto;
int operacao, repeticao=0;
double renda, valor, soma=0;
Deducao[] deducao = new Deducao[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) {
case 1:
System.out.println("Nome: ");
nome = inputstr.nextLine();
System.out.println("Cpf: ");
cpf = inputstr.nextLine();
System.out.println("Renda Anual: ");
renda = input.nextDouble();
imposto = new ImpostoDeRenda(nome, cpf, renda);
for(int i=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;
Deducao deducoes = new Deducao(descricao, valor);
deducao[i]=deducoes;
imposto.inserirDeducao(deducao);
}
imposto.calculaImposto(soma);
break;
case 2:
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:
@Override
public String toString(){
return “Teste”;
}
É 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[quote=“Cafeeiro, post:1, topic:357772”]
ImpostoDeRenda imposto;
[/quote]
ImpostoDeRenda imposto = null;
Resolve seu problema sem alterar o que já foi feito.
Dessa forma @raphaeloneves , quando entrar no case 2 estará tentando pegar uma propriedade de um objeto nulo
case 2:
System.out.println(imposto.toString());
}