Estou tendo problemas com um metodo do meu sistema…
public class TProduto {
public int codigo;
public String nome;
public double preco, quantidadeEstoque, quantidadeMinima;
public void aumentaPreco(double p2) {
preco=preco+(preco*p2);
}
public void diminuiPreco () {
}
public void incrementaQuantidade() {
}
public void incrementaQuantidade(double q) {
quantidadeEstoque=quantidadeEstoque+q;
}
public void decrementaQuantidade() {
}
public void decrementaQuantidade(double q) {
quantidadeEstoque=quantidadeEstoque-q;
}
}
E aqui está o sistema estou com problemas na substituicao de uma determinada posicao do vetor, pelo produto q esta na ultima posicao do vetor ou seja quero fazer assim, pega o produto q esta na posicao B e subtituir pelo produto q esta na posicao D, esta q seria a ultima posicao do vetor.
O Problema seria nos procedimento removerProduto, aumentaprecoProduto, aumentaprecotodos.
import javax.swing.JOptionPane;
public class Loja {
static TProduto[] produtos=new TProduto[200];
static int q=0;
public static void main(String[] args) {
int x=0;
do {
x=menu();
switch(x) {
case 1: { //inserirProduto
produtos[q]=new TProduto();
inserirProduto(produtos);
q++;
break;
}
case 2: { //removerProduto
String p1=JOptionPane.showInputDialog(null, "digite o nome do produto").toUpperCase();
removerProduto(p1);
q--;
break;
}
case 3: { //consultarProduto
String p1=JOptionPane.showInputDialog(null, "nome do produto").toUpperCase();
consultarProduto(p1);
break;
}
case 4: { //aumentaPrecoProduto
String p1=JOptionPane.showInputDialog(null, "nome do produto").toUpperCase();
double p2=Double.parseDouble(JOptionPane.showInputDialog(null, "porcentagem de aumento"));
aumentaPrecoProduto(p1, p2);
break;
}
case 5: { //aumentaPrecoTodos
double p2=Double.parseDouble(JOptionPane.showInputDialog(null, "porcentagem de aumento"));
aumentaPrecoTodos(p2);
break;
}
case 6: { //venderProduto
String p1=JOptionPane.showInputDialog(null, "nome do produto").toUpperCase();
venderProduto(p1);
break;
}
case 7: { //comprarProduto
String p1=JOptionPane.showInputDialog(null, "nome do produto").toUpperCase();
comprarProduto(p1);
break;
}
case 8: { //VerificaEstoque
String p1=JOptionPane.showInputDialog(null, "nome do produto").toUpperCase();
for (int i=0;i<q;i++) {
if (p1.equals(produtos[i].nome)) {
double q1=Double.parseDouble(JOptionPane.showInputDialog(null, "quatidade desejada"));
int c1=produtos[i].codigo;
if (verificaEstoque(c1,q1)) {
JOptionPane.showMessageDialog(null, "quantidade suficiente");
} else {
JOptionPane.showMessageDialog(null, "quantidade insuficiente");
}
} else {
JOptionPane.showMessageDialog(null, "produto inexistente");
}
}
break;
}
case 9: { //listarAbaixoMinimo
listarAbaixoMin();
break;
}
case 10: { //listarProdutos
listarProdutos();
break;
}
}
} while(x!=11);
}
static int menu() {
String m="1 - inserir produto";
m+="\n2 - excluir produto";
m+="\n3 - consultar";
m+="\n4 - aumentar preço de um produto";
m+="\n5 - aumentar preço de todos";
m+="\n6 - vender";
m+="\n7 - comprar";
m+="\n8 - verificar estoque";
m+="\n9 - listar abaixo do minimo";
m+="\n10 - listar todos";
m+="\n11 - sair";
int op=0;
do {
op=Integer.parseInt(JOptionPane.showInputDialog(null, m));
if (op<1 || op>11) {
JOptionPane.showMessageDialog(null, "Opção Invalida");
}
} while(op<1 || op>11);
return op;
}
static boolean verifica(String n) {
for (int i=0;i<q;i++) {
if (n.equals(produtos[i].nome)) {
return true;
}
}
return false;
}
static boolean verificaEstoque(int c1, double q1) {
for (int i=0;i<q;i++) {
if (c1==produtos[i].codigo) {
if (q1<=produtos[i].quantidadeEstoque) {
return true;
}
}
}
return false;
}
static void decrementaQtd(int c1, double q1) {
for (int i=0;i<q;i++) {
if (c1==produtos[i].codigo) {
produtos[i].decrementaQuantidade(q1);
}
}
}
static void incrementaQtd(int c1, double q1) {
for (int i=0;i<q;i++) {
if (c1==produtos[i].codigo) {
produtos[i].incrementaQuantidade(q1);
}
}
}
static void inserirProduto(TProduto[] p) {
int c=0;
while (c==0) {
String p1=JOptionPane.showInputDialog(null, "nome do produto").toUpperCase();
if (!verifica(p1)) {
p[q].nome=p1;
p[q].codigo=Integer.parseInt(JOptionPane.showInputDialog(null, "codigo do produto"));
p[q].preco=Double.parseDouble(JOptionPane.showInputDialog(null, "preço do produto"));
p[q].quantidadeEstoque=Double.parseDouble(JOptionPane.showInputDialog(null, "quantidade em estoque"));
p[q].quantidadeMinima=Double.parseDouble(JOptionPane.showInputDialog(null, "quantidade minima"));
c=1;
} else {
JOptionPane.showMessageDialog(null, "produto existente");
}
}
}
static void consultarProduto(String p1) {
String m1="dados do produto:";
if (verifica(p1)) {
for (int i=0;i<q;i++) {
if (p1.equals(produtos[i].nome)) {
m1+="produto: "+produtos[i].nome;
m1+="\ncodigo: "+produtos[i].codigo;
m1+="\npreço: "+produtos[i].preco;
m1+="\nqtd estoque: "+produtos[i].quantidadeEstoque;
m1+="\nqtd minima: "+produtos[i].quantidadeMinima;
}
}
JOptionPane.showMessageDialog(null, m1);
} else {
JOptionPane.showMessageDialog(null, "produto inexistente");
}
}
static void removerProduto(String p1) { //O PROBLEMA SE ENCONTRA NESTE PROCEDIMENTO.
if (verifica(p1)) {
for (int i=0;i<q;i++) {
if (p1.equals(produtos[i].nome)) {
produtos[i].codigo=produtos[q].codigo;
produtos[i].nome=produtos[q].nome;
produtos[i].preco=produtos[q].preco;
produtos[i].quantidadeEstoque=produtos[q].quantidadeEstoque;
produtos[i].quantidadeMinima=produtos[q].quantidadeMinima;
}
}
} else {
JOptionPane.showMessageDialog(null, "produto inexistente");
}
}
static void aumentaPrecoProduto(String p1, double p2) {
if (verifica(p1)) {
for (int i=0;i<=q;i++) {
if (p1.equals(produtos[i].nome)) {
produtos[i].aumentaPreco(p2);
}
}
} else {
JOptionPane.showMessageDialog(null, "produto inexistente");
}
}
static void aumentaPrecoTodos(double p2) {
for (int i=0;i<=q;i++) {
produtos[i].aumentaPreco(p2);
}
}
static void venderProduto(String p1) {
if (verifica(p1)) {
for (int i=0;i<q;i++) {
if (p1.equals(produtos[i].nome)) {
int c1=produtos[i].codigo;
double q1=Double.parseDouble(JOptionPane.showInputDialog(null, "quatidade desejada"));
if (verificaEstoque(c1,q1)) {
decrementaQtd(c1,q1);
JOptionPane.showMessageDialog(null, "vendido: "+produtos[i].nome+"\nquantidade: "+q1);
} else {
JOptionPane.showMessageDialog(null, "quantidade em estoque insuficiente");
}
}
}
} else {
JOptionPane.showMessageDialog(null, "produto inexistente");
}
}
static void comprarProduto(String p1) {
if (verifica(p1)) {
for (int i=0;i<q;i++) {
if (p1.equals(produtos[i].nome)) {
int c1=produtos[i].codigo;
double q1=Double.parseDouble(JOptionPane.showInputDialog(null, "quatidade desejada"));
incrementaQtd(c1,q1);
}
}
}
}
static void listarAbaixoMin() {
String m1="produtos abaixo do estoque minimo:";
for (int i=0;i<q;i++) {
if (produtos[i].quantidadeEstoque<produtos[i].quantidadeMinima) {
m1+="\nproduto: "+produtos[i].nome+" - estoque: "+produtos[i].quantidadeEstoque+" - minimo: "+produtos[i].quantidadeMinima;
}
}
JOptionPane.showMessageDialog(null, m1);
}
static void listarProdutos() {
String m1="lista de produtos:";
for (int i=0;i<q;i++) {
m1+="\nproduto: "+produtos[i].nome+" - codigo: "+produtos[i].codigo+" - preço: "+produtos[i].preco+" - estoque: "+produtos[i].quantidadeEstoque+" - minimo: "+produtos[i].quantidadeMinima;
}
JOptionPane.showMessageDialog(null, m1);
}
}
Muito obrigado a todos pela atencao e por me ajudarem…
Exception in thread "main" java.lang.NullPointerException
at TrabalhoFinal.Loja.removerProduto(Loja.java:168)
at TrabalhoFinal.Loja.main(Loja.java:20)