0
Guys, help me, I can’t find the error in my code. I know this error refers to not having the position in the array to store but I don’t 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 mistake:
Exception in thread "main" java.lang.Nullpointerexception at br.com.Fiap.exercicios.Lista2.exercicio2.Teste.main(Test.java:20)
appears after I type the price in the loop, on the highlighted line 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);
}
}
Your code has a serious logic error: if I pass 2000 products to buy, it will pop the size set pro array and launch
ArrayIndexOutOfBoundsException
. Or you limit the purchase amount before enteringfor
or switch to a dynamic array, such as the lists(arraylist for example) in the Collections package. As for the error, check if the line you indicate is actually that of the error, there is nothing wrong, apparently, until the line marked– user28595