Ordem crescente de produtos por preço (arraylist)

1 resposta
M

Boa Tarde

Preciso apresentar um trabalho amanhã de manhã sobre um supermercado com as seguintes opções:
1-CADASTRAR PRODUTO
2-EXCLUIR PRODUTO
3-ALTERAR CADASTRO DE PRODUTO
4-LISTAR PRODUTOS FILTRANDO POR VALOR$
5-LISTAR PRODUTOS CADASTRADOS
6-VENDA DE PRODUTOS
7-VER VALOR TOTAL EM ESTOQUE

No caso, estou com problemas na opção 4 e 7, pois não consigo fazer com que seja mostrado em ordem crescente pelo “valor” dos produtos e mostrar a soma total dos valores de todos os produtos (subtraindo no caso a cada venda e somando a cada cadastro novo).

Segue o que tenho em mãospor enquanto:

import java.util.Comparator;

import java.util.Collections;

import java.util.ArrayList;

public class Banco{

ArrayList  produto=new ArrayList();

Produto prod=new Produto();
public void excluirProd(Produto p){
    produto.remove(p);
}
public void armazenarProd(Produto p){
    produto.add(p);
}
public Produto buscarProd(String nome){
    for(int x=0; x<produto.size(); x++){
        prod=produto.get(x);
        if(prod.getNome().equals(nome)){
            return prod;
        }
        else{
            prod=null;
        }
    }
    return prod;
}
public void filtrar(){
    if (produto.isEmpty()){
        System.out.println("BANCO DE DADOS VAZIO");
    }
    else{
        for(int i=0; i<produto.size(); i++){
            prod=produto.get(i);
            
            System.out.println("Código "+i+"  -  "+prod.getNome());
        }
    }
}
public void mostrar(){
    if (produto.isEmpty()){
        System.out.println("BANCO DE DADOS VAZIO");
    }
    else{
        for(int i=0; i<produto.size(); i++){
            prod=produto.get(i);
            
            System.out.println("Código "+i+"  -  "+prod.getNome());
        }
    }
}

}

public class Produto{
private String nome, marca, fornecedor;
private double valor;
public Produto(){
nome="";
marca="";
fornecedor="";
valor=0;
}
public void setNome(String nome){
this.nome=nome;
}
public String getNome(){
return this.nome;
}
public void setMarca(String marca){
this.marca=marca;
}
public String getMarca(){
return this.marca;
}
public void setFornecedor(String fornecedor){
this.fornecedor=fornecedor;
}
public String getFornecedor(){
return this.fornecedor;
}
public void setValor(double valor){
this.valor=valor;
}
public double getValor(){
return this.valor;
}
}

import java.util.Scanner;
public class Principal{
public static void main(String args[]){
Scanner recebe=new Scanner (System.in);
Banco ban = new Banco();
System.out.println("+++++SUPERMERCADOS DO ZÉ+++++");
int op=0;
do{
System.out.println("\nO QUE VOCÊ DESEJA FAZER?\n________________________________________\n1-CADASTRAR PRODUTO\n2-EXCLUIR PRODUTO\n3-ALTERAR CADASTRO DE PRODUTO\n4-LISTAR PRODUTOS FILTRANDO POR VALOR$\n5-LISTAR PRODUTOS CADASTRADOS\n6-VENDA DE PRODUTOS\n7-VER VALOR TOTAL EM ESTOQUE\n8-SAIR\n________________________________________");
op=recebe.nextInt();
switch(op){
case 1:
System.out.println("QUANTOS PRODUTOS DESEJA CADASTRAR? ");
int qtd=recebe.nextInt();
for(int i=0; i<qtd; i++){
Produto prod=new Produto();
System.out.println("Digite o nome do produto: ");
prod.setNome(recebe.next());
System.out.println("Nome do Fornecedor: ");
prod.setFornecedor(recebe.next());
//recebe.next();
System.out.println(“Valor do produto:”);
prod.setValor(recebe.nextDouble());
System.out.println("Digite a marca do produto: ");
prod.setMarca(recebe.next());
ban.armazenarProd(prod);
}
break;
case 2:
System.out.println("Digite o nome do produto a ser excluído: ");
Produto pro=new Produto();
pro=ban.buscarProd(recebe.next());
if(pro==null){
System.out.println(“PRODUTO NÃO ENCONTRADO”);
}
else{
ban.excluirProd(pro);
System.out.println(“PRODUTO EXCLUÍDO COM SUCESSO”);
}
break;
case 3:
System.out.println(“Digite o nome do produto a ser alterado”);
Produto du=new Produto();
du=ban.buscarProd(recebe.next());
if(du==null){
System.out.println(“PRODUTO NÃO ENCONTRADO”);
}
else{
ban.excluirProd(du);
System.out.println("Novo nome do produto: ");
du.setNome(recebe.next());
//recebe.next();
System.out.println("Novo Fornecedor: ");
du.setFornecedor(recebe.next());
System.out.println(“Novo Valor do produto:”);
du.setValor(recebe.nextDouble());
System.out.println("Nova marca do produto: ");
du.setMarca(recebe.next());
ban.armazenarProd(du);
}
break;
case 4:
System.out.println(“LISTA DE PRODUTOS”);
//Produto =new Produto();
ban.filtrar();
break;
case 5:
ban.mostrar();
break;
case 6:
System.out.println("Digite o nome do produto a ser vendido: ");
Produto to=new Produto();
pro=ban.buscarProd(recebe.next());
if(to==null){
System.out.println(“PRODUTO NÃO ENCONTRADO”);
}
else{
ban.excluirProd(to);
System.out.println(“PRODUTO VENDIDO COM SUCESSO”);
}
break;
case 7:
Produto pr=new Produto();
if(pr==null){
System.out.println(“NÃO EXISTE VALORES A SEREM MOSTRADOS”);
}
break;
case 8:
System.out.println(“ATÉ MAIS O/”);
break;
}
}
while(op!=8);
}
}

Obrigado a quem puder me ajudar e desculpe se postei de forma errada, li na corrida as regras pois estou nessa correria para aprontar ele hoje para apresentar amanhã de manhã. Pesquisei no fórum e tentei alguma coisa que li em outros tópicos mas não funcionou, não quero que façam por mim, mas precisava de pelo menos um exemplo do jeito mais “fácil” para mim poder ajeitar para o meu programa.

Aguardo retorno.

OBS: o prog que uso é o BLUEJ.

1 Resposta

nel

Oi!

Antes de mais nada, por favor, coloque seu código todo entre as tags code, caso contrário, é praticamente inviavél analisar ele.
Sobre organizar de ordem crescente, descrente, enfim, use o Collections.sort(suaList, comparator);

Isso mesmo, use o Comparator para organizar a lista como desejar.

API Comparator: Comparator
Exemplo da Caelum.

Abraços.

Criado 14 de julho de 2011
Ultima resposta 14 de jul. de 2011
Respostas 1
Participantes 2