Olá!
Estou fazendo um pequeno Estoque para um trabalho da faculdade.
Na Classe Estoque, eu gostaria de implementar um método para adicionar um Item caso o nome dele seja diferente dos itens que já tenho em um Array e adicionar uma Quantidade a esse Item caso ele já exista no meu Array.
Consegui uma forma de verificar se existe o nome do novo Item digitado através do Código abaixo:
for(int i = 0; i<6; i++){
if(opcao.equals(produtos[n+1].nome.trim())){
System.out.print("\nProduto ja existente.\nAdicionar quantidade: ");
opcaoQtde = scanner.nextInt();
break;
}
n++;
} // forma que encontrei para verificar se o nome digitado já existe no array.
Porém, não consegui pensar em uma forma de implementar uma nova quantidade a um item existente no array qtde.
Segue o código completo da classe Estoque:
Produto[] produtos;
Scanner scanner = new Scanner(System.in);
int[] qtde = new int[]{1, 5, 1, 3, 5, 2, 2};
public void exibir(){
produtos = new Produto[10];
produtos[0] = new Produto();
produtos[0].nome = "Fazoya ";
produtos[1] = new Produto();
produtos[1].nome = "Xarid ";
produtos[2] = new Produto();
produtos[2].nome = "Sunya ";
System.out.printf("%n %n %24s %n","ESTOQUE");
System.out.printf("%n %15s %20s %n %n","Produtos", "Quantidade");
System.out.printf("%s %16d %n", produtos[0].nome,qtde[0]);
System.out.printf("%s %16d %n", produtos[1].nome,qtde[1]);
System.out.printf("%s %16d %n", produtos[2].nome,qtde[2]);
String opcao;
System.out.printf("\n\nDeseja adicionar um novo produto? [s/n]\n");
do{
opcao = scanner.nextLine().toLowerCase();
switch(opcao){
case"s":
addItem();
opcao = "s";
break;
case"n":
System.out.println("Encerrando");
opcao = "n";
break;
default:
System.out.println("Opcao invalida, digitar somente [s/n]");
break;
}
}while(opcao != "s" && opcao != "n");
}
public void addItem(){
String opcao;
int opcaoQtde;
int n = -1;
System.out.print("Novo Item: ");
opcao = scanner.nextLine();
for(int i = 0; i<6; i++){
if(opcao.equals(produtos[n+1].nome.trim())){
System.out.print("\nProduto ja existente.\nAdicionar quantidade: ");
opcaoQtde = scanner.nextInt();
break;
}
n++;
}
}
}
Resumindo, a dúvida é, como posso acrescentar quantidade a um item já existente.
No caso esse outro array seria o de quantidade (qtde
)? se for, para ‘funcionar’ o tamanho dos dois arrays deve ser o mesmo, para ter correspondência entre as posições e, consequentemente, entre os índices.
1 curtida
Isso mesmo Iohannes, é o de quantidade sim, e ambos têm o mesmo tamanho, produto e qtde…
Pode me dar uma dica de como eu posso adicionar qtde a um item que já existe no meu array de itens?
o seu vetor de itens tem de ser do tamanho do vetor de quantidade
ex:
String[3] item = {“item1”,“item2”,“item3”}
int[3] quantidade = {1,2,3}
o item e a quantidade devem estar na mesma posição.
ex: indice 0
Nome item = item1
quantidade = 1
indice 1
Nome item = item2
quantidade = 2
para mudar a quantidade do item2
quantidade[1] = 5
1 curtida
se eu entendi bem a sua dúvida, seria algo como alterar o valor da variavel que guarda a quantidade somando ela mais a quantidade nova!
o produto[0] equals nome então
qtdadeItem[0]…
não entendi pq vc usa n+1 no for ao invéz do i? Fiquei curioso
1 curtida
Bom dia Heitor, obrigado, mas o problema é que eu preciso que seja somad o valor da quantidade do item que for digitado pelo usuário com o valor da quantidade já existente, ou seja, quando o usuário digitar um item que já existe no Array Produto, ele vai adicionar uma quantidade, o problema é, eu não sei como fazer o programa “entender” produto que estou digitando corresponde ao mesmo índice da quantidade a que ele pertence… Não sei se consegui expressar muito bem.
Bom dia Luis, sim, exatamente isso, só que eu gostaria de fazer de forma automática,
Por exemplo, nessa parte do código:
for(int i = 0; i<6; i++){
if(opcao.equals(produtos[n+1].nome.trim())){
System.out.print("\nProduto ja existente.\nAdicionar quantidade: ");
opcaoQtde = scanner.nextInt();
break;
}
n++;
}
Quando o usuário digitar um item já existente, ele vai exibir uma mensagem para o usuário digitar a quantidade, essa quantidade será somada a quantidade existente, só que a dúvida é, o produto e a qtde têm índices correspondentes, o qtde[0] pertence ao produto[0] e assim subsequentemente, a dúvida aqui seria qual a forma de fazer a implementação desse novo valor de qtde na qtde correspondente ao item digitado.
Em relação ao N+1, realmente n tinha necessidade kk Já retirei do código, deixei somente o i e funcionou normalmente. Muito obrigado!
Pessoal, consegui arranjar um jeito aqui, agradeço a todos que responderam o tópico!
Segue o código, se por acaso ajudar alguém.
for(int i = 0; i<7; i++){
if(opcao.equals(produtos[i].nome.trim())){
System.out.print("\nProduto ja existente.\nAdicionar quantidade: ");
opcaoQtde = scanner.nextInt();
for(int j = 0; j<7; j++){
if(qtde[i] == j){
qtde[i] = qtde[i] + opcaoQtde;
break;
}
}
break;
}
}
Não entendi o porque usou um segundo for? imagina se qtde[i] for maior ou igual a 7.
1 curtida