Boa noite pessoal, sou novo no fórum estou fazendo um curso em java e me deparei com um erro, eu não consigo identificar o erro fazendo o try catch… acho que falta experiência para saber o que o erro está querendo me dizer. Alguém pode me ajudar?
java.lang.NullPointerException
at entities.Individual.taxa(Individual.java:29)
at application.Program.main(Program.java:47)
vou deixa o código das duas classes aqui…
package entities;
public class Individual extends Imposto {
private Double GastosMedicos;
public Individual(){
super();
}
public Individual(String name, Double impostoAnual, Double gastosMedicos) {
super(name, impostoAnual);
GastosMedicos = gastosMedicos;
}
public Double getGastosMedicos() {
return GastosMedicos;
}
public void setGastosMedicos(Double gastosMedicos) {
GastosMedicos = gastosMedicos;
}
@Override
public double taxa() {
try{
double impostoBasico;
if (getImpostoAnual() < 20000.0){
impostoBasico = getImpostoAnual() * 0.15;
}
else{
impostoBasico = getImpostoAnual() * 0.25;
}
impostoBasico -= getGastosMedicos() * 0.5;
if(impostoBasico <0.0) {
impostoBasico = 0.0;
}
return impostoBasico;
}
catch(NullPointerException e){
System.out.println("Error");
e.printStackTrace();
}
return GastosMedicos;
}
}
==================================================================
package application;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Scanner;
import entities.Individual;
import entities.Juridico;
import entities.Imposto;
public class Program {
public static void main(String[] args) {
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
List<Imposto> list = new ArrayList<>();
System.out.println("Enter the number of taxpayers");
int n = sc.nextInt();
for(int i=1; i<=n; i++){
System.out.println("Taxpayer" + i + "Data: " );
System.out.print("Individual or company (i/c)");
char ch = sc.next().charAt(0);
System.out.print("Name: ");
String name = sc.next();
System.out.print("Imposto anual:");
double impostoAnual= sc.nextDouble();
if(ch == 'i') {
System.out.println("Gastos com saúde: ");
double gastosMedicos = sc.nextDouble();
list.add(new Individual(name, impostoAnual, gastosMedicos));
}
else{
System.out.print("Numero de funcionarios: ");
Integer numeroFuncionarios = sc.nextInt();
list.add(new Juridico(name, impostoAnual, numeroFuncionarios));
}
System.out.println("");
System.out.println("TAXES PAID:");
for(Imposto tp : list) {
System.out.println(tp.getName() + ": $" + String.format("%.2f", tp.taxa()));
}
double sum = 0.0;
for(Imposto tp : list) {
sum += tp.taxa();
}
System.out.println("TOTAL TAXES: $ " + String.format("%.2f", sum));
sc.close();
}
}
}