People, help me, I can not find where the error is in my code. I know this error refers to not having the position in the array to store but I do not know where to fix it.
package br.com.fiap.exercicios.lista2.exercicio2;
import java.util.Scanner;
public class Produto {
private int quantidade;
private double preco;
private double desconto;
Scanner teclado = new Scanner(System.in);
public int getQuantidade() {
return quantidade;
}
public void setQuantidade(int quantidade) {
this.quantidade = quantidade;
}
public double getPreco() {
return preco - ((this.desconto/100)*this.preco);
}
public void setPreco(double preco) {
this.preco = preco;
}
public double getDesconto() {
return desconto;
}
public void setDesconto(double desconto) {
int contador = 0;
while(contador != 1){
if(desconto > 100 || desconto < 0){
System.out.println("Entre com um desconto válido, descontos variam de 0 - 100%.");
desconto = teclado.nextDouble();
this.desconto = desconto;
}else{
this.desconto = desconto;
contador = 1;
}
}
}
}
The error:
Exception in thread "main" java.lang.NullPointerException
appears after I type the price in the loop, in the line highlighted below
package br.com.fiap.exercicios.lista2.exercicio2;
import java.util.Scanner;
public class Teste {
public static void main(String[] args){
Produto[] carrinho = new Produto[1000];
Scanner scanner = new Scanner(System.in);
int n;
double precoTotal = 0;
System.out.println("Quantos produtos você deseja comprar?");
n = scanner.nextInt();
for(int i = 0; i < n; i++){
System.out.println("Entre com a quantidade do produto " + i+1 + ":");
int quantidade = scanner.nextInt();
carrinho[i].setQuantidade(quantidade);
System.out.println("Entre com o valor do produto " + i+1 + ":");
double preco = scanner.nextDouble();// o erro ocorre aqui carrinho[i].setPreco(preco);
System.out.println("Entre com o desconto do produto " + i+1 + " caso haja:");
double desconto = scanner.nextDouble();
carrinho[i].setDesconto(desconto);
}
for(int i = 0; i < n; i++){
precoTotal += carrinho[i].getPreco();
}
System.out.println("O valor total da compra é de R$" + precoTotal);
}
}