Boa noite a todos!
De já, adianto que sou iniciante. Muito iniciante
.
Estou com um problema em um programa de treino que estou desenvolvendo.
Vou expor o codigo aqui e em seguida, comentar o que esta acontecendo:
================
package entities;
public class Fabrica {
private Integer camisaP = 10;
private Integer camisaM = 15;
private Integer camisaG = 20;
private double total;
private Descontos desconto;
public Integer getCamisaP() {
return camisaP;
}
public void setCamisaP(Integer camisaP) {
this.camisaP = camisaP;
}
public Integer getCamisaM() {
return camisaM;
}
public void setCamisaM(Integer camisaM) {
this.camisaM = camisaM;
}
public Integer getCamisaG() {
return camisaG;
}
public void setCamisaG(Integer camisaG) {
this.camisaG = camisaG;
}
public Double quantidadesCamisetas(int qtdCP, int qtdCM, int qtdCG) {
total = (camisaP * qtdCP) + (camisaM * qtdCM) + (camisaG * qtdCG);
return total;
}
public double getTotal() {
return total;
}
@Override
public String toString() {
return "Total: " + total + " R$. /nTotal com descontos: " + desconto.desconto();
================
package entities;
public class Descontos {
private double desconto10 = 0.1;
private double desconto20 = 0.2;
private double desconto30 = 0.3;
private Fabrica fabrica;
private double descontoTotal;
public double desconto() {
double totalGeral = fabrica.getTotal();
if (totalGeral <= 100.0) {
descontoTotal = totalGeral / desconto10;
} else if (totalGeral <= 150.00) {
descontoTotal = totalGeral / desconto20;
} else {
descontoTotal = totalGeral / desconto30;
}
return descontoTotal;
}
public String toString() {
return "." + descontoTotal;
}
}
================
package entities;
import java.util.Locale;
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);
Fabrica fabrica = new Fabrica();
System.out.println("Bem vindo a loja de camisetas!");
System.out.println("Digite o total de camisas por tamanho desejadas:");
System.out.print("Camisa P: ");
int p = sc.nextInt();
System.out.print("Camisa M: ");
int m = sc.nextInt();
System.out.print("Camisa G: ");
int g = sc.nextInt();
fabrica.quantidadesCamisetas(p, m, g);
System.out.println(fabrica);
sc.close();
}
}
=============ERRO=========
Exception in thread “main” java.lang.NullPointerException: Cannot invoke “entities.Descontos.desconto()” because “this.desconto” is null
at entities.Fabrica.toString(Fabrica.java:46)
at java.base/java.lang.String.valueOf(String.java:3365)
at java.base/java.io.PrintStream.println(PrintStream.java:1047)
at entities.Program.main(Program.java:25)
==========
Este erro acontece quando eu tento usar o metodo de desconto. Más não consegui intender exatamente o que pode estar errado. (muito leigo por sinal);
Alguem poderia me ajudar? Desculpem o incômodo. 