Quero passar os dados para um array com scanner em java

6 respostas Resolvido
java
L

Boa noite estou fazendo um trbalho da faculade para salvar meu semestre! Se trata de uma aplicação de ponto de vendas, onde existe produto cliente e etc…
fiquei preso a respeito de uma função CADASTRAR PRODUTO. onde a mesma possui um array list de uma classe Categorias
quero saber como passar Via Scanner, para o array list a “categoria”

ex: Cadastrar um notbook
nome String
Preço Double
Categoria ArrayList

como se daria nesse caso? Sou um pouco leigo em java. como eu faria nesse caso?
segue o codigo.
public class Produto {

Integer id;
String nomeProduto;
Pagamentos pagamento;
List<Pedido> pedido = new ArrayList<>();
    String cat;
double preco;
List <Categoria> categoria = new ArrayList<Categoria> ();


       
Scanner entrada = new Scanner(System.in);

List<Produto> listaProduto = new ArrayList<Produto>();
public Produto(){

this.id = id;

this.nomeProduto = nomeProduto;

this.pagamento = pagamento;

this.preco = preco;
}

public List<Categoria> getCategoria() {
    return categoria;
}

public void setCategoria(List<Categoria> categoria) {
    this.categoria = categoria;
}

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getNomeProduto() {
    return nomeProduto;
}

public void setNomeProduto(String nomeProduto) {
    this.nomeProduto = nomeProduto;
}

public Pagamentos getPagamento() {
    return pagamento;
}

public void setPagamento(Pagamentos pagamento) {
    this.pagamento = pagamento;
}

public List<Pedido> getPedido() {
    return pedido;
}

public String getCat() {
    return cat;
}

public void setCat(String cat) {
    this.cat = cat;
}


public void setPedido(List<Pedido> pedido) {
    this.pedido = pedido;
}

public double getPreco() {
    return preco;
}

public void setPreco(double preco) {
    this.preco = preco;
}

public Scanner getEntrada() {
    return entrada;
}

public void setEntrada(Scanner entrada) {
    this.entrada = entrada;
}

public List<Produto> getListaProduto() {
    return listaProduto;
}

public void setListaProduto(List<Produto> listaProduto) {
    this.listaProduto = listaProduto;
}






public void cadastraProduto() {

    Produto produto = new Produto();
    
    System.out.println("===== CADASTRAR PRODUTO =====");

    System.out.println("NOME PRODUTO ");
    produto.setNomeProduto(entrada.nextLine());

    System.out.println("PREÇO ");
    produto.setPreco(entrada.nextFloat());

    System.out.println("CATEGORIA");
   

    

   
}

6 Respostas

B
Voce pode criar um metodo addCategoria, dentro da classe produtos, que recebe como parametro um tipo Categoria, ex:

public void addCategoria(Categoria categoria) {

categorias.add(categoria);

}

agora no programa principal voce instacia a classe e passa o argumento pra ela:

string a = sc.nextLine();

string b = sc.nextLine();

string c = sc.nextLine();

Categoria cat = new Categoria(a, b ,c);
addCategoria(cat);

obs: eu não sei tanta coisa tambem, estou bem no começo dos meus estudos de java mas espero que isso possa te ajudar

L

Bruno a ideia é boa, mas não satisfaz a minha aplicação . Percebe aqui que eu estou passando via (Scanner) os parametros : nome , preço e categoria.?
No caso eu ate poderia chamar uma funcao parecida na classe Categoria. Procuro uma solucao mais otimizada. Porém agradeço a atenção , se de repente tiver outra ideia. Manda! Vlw e boa noite

J

Bom uma dúvida, por se você cadrastar o netebook a categoria vai ser por exemplo

eletrodoméstico,computadores e notebooks, marca, nome do notebook

se for isso da pra fazer uma list normal com while.Exemplo:

String categoria =null;

do {

List  lista= new ArrayList ();

categoria= sc.nextLine ();

lista.add (categoria);

}while (categoria.equals ("")){
L

Não entendi o seu código

D
Solucao aceita

Via Scanner fica bem complicado, porém, dá para fazer.
Você precisa unir as ideias do @BrunoPereira e do @Jhonatas_Tomaz.
Fazer um laço que permita incluir N categorias e, para cada categoria, invocar o método addCategoria.

L

Pronto, boa alternativa! Valeeeeu.

Criado 19 de dezembro de 2019
Ultima resposta 20 de dez. de 2019
Respostas 6
Participantes 4