Exibir vetor de classe

2 respostas
T

Olá! Sou iniciante e estou tendo problemas para exibir um vetor de classe. São três as classes, a principal exibe o menu e chama o método da opção escolhida, a segunda é a classe do produto, com nome e preço e a terceira (“Carrinho”) é onde estou tendo problemas no segundo método, “atualizarProduto”. Estava tentando direto no vetor “Lista”, e estava tendo problema. Então, como havia resolvido um problema de um método anterior por meio de outro objeto, como poderão ver, tentei o mesmo por meio do objeto produto, e continua com problemas. Já tentei o println sem o vetor e funcionou.
A seguir as classes… Para fazer o teste, comece por adicionar um produto qualquer no vetor (opção 1), e depois tente a opção atualizar produtos, onde até agora só tem a exibição dos produtos adicionados, e verá o erro.

package Compras;

import java.util.Scanner;

public class Principal {

public static void main (String[] args){

Scanner ler=new Scanner (<a href="http://System.in">System.in</a>);

int opcao, ultimoProduto=0;

do{

//Exibição do menu

System.out.println (1- Adicionar produto \n2- Aualizar produto);

System.out.println (3- Remover produto \n4- Ver carrinho \n5- Sair);

opcao=ler.nextInt();

//Acionar opção escolhida

switch (opcao){

case 1:

Carrinho.adicionarProduto(ultimoProduto++);

ultimoProduto++;

break;

case 2:

Carrinho.atualizarProduto(ultimoProduto);

break;

}

}while(opcao!=5);

}

}
package Compras;
public class Produto {
    String nome= new String();
    double preco;
    String getnome;
    public Produto(String nome, double preco){
        this.nome=nome;
        this.preco=preco;
    }
}


package Compras;
import java.util.Scanner;
public class Carrinho {
    static Produto[] lista= new Produto[50];
    static Scanner ler=new Scanner(System.in);
    static void adicionarProduto(int ultimoProduto) {
        System.out.println ("Nome: ");
        String nome=ler.nextLine();
        System.out.println ("Preco: ");
        double preco=Double.parseDouble(ler.nextLine());
        Produto produto = new Produto (nome, preco);
        lista[ultimoProduto]=produto;
        System.out.println (lista[ultimoProduto].nome+" foi adicionado ao carrinho.");
    }
    static void atualizarProduto(int ultimoProduto){
        for (int x=1; x<=ultimoProduto; x++){
            Produto produto = lista[x];
            System.out.println (x+"- "+produto.nome+" "+produto.preco);
        }
    }
}

2 Respostas

Jederson_Andre

creio que o erro pode estar acontecendo aqui… vc esta incrementando 2 vezes o mesmo atributo
add essa linha e veja o valor que ele esta retornando

case 1:
                Carrinho.adicionarProduto(ultimoProduto++);
                ultimoProduto++;
                
                // veja isto
                System.out.println("valor ultimoProduto: " + ultimoProduto);
                break;
Jederson_Andre

Outra coisa… vc instanciou um vetor de 50 posições, no laço ele vai percorrer todas as posições, se elas tiver vazias ira dar uma exceção.

Criado 28 de dezembro de 2017
Ultima resposta 29 de dez. de 2017
Respostas 2
Participantes 2