[RESOLVIDO] Percorrer um Array e caso encontrar um valor adicionar a outro Array um novo valor

8 respostas Resolvido
javaarray
C

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  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.

8 Respostas

I

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.

C

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?

H
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

Luis_Prado

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

C

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.

C

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!

C
Solucao aceita

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;
		}
	}
Luis_Prado

Não entendi o porque usou um segundo for? imagina se qtde[i] for maior ou igual a 7.

Criado 23 de abril de 2020
Ultima resposta 24 de abr. de 2020
Respostas 8
Participantes 4