Metodos utilizando arrays

8 respostas
F

Estou fazendo um programa que utiliza dois arrays. Um tipo string e outro tipo int.

Um contem os nomes de produtos e o outro seus preços.

Preciso determinar qual o produto de maior preço.

Como fazer isso num mesmo método, passando os dois arrays como parametros?

8 Respostas

Adelar
olá, não é necessário passar o array do tipo String, que suponho ser o nome do produto, a não ser que você queira mostrar o seu nome:
// retorna -1 caso não encontre ou ocorra erro
	// ou retorna o indico do produto de maior valor
	public int getMax(String[] vet1, int[] vet2){
		// verificando se todos os produtos possuem nome e valor
		if(vet1.length != vet2.length){
			return -1;
		}
		
		// o primeiro elemento é o maior até agora
		int id_max=0;
		
		for(int i=1;i<vet2.length;i++){
			if(vet2[i]>vet2[id_max]){
				id_max=i;
			}
		}
		
		System.out.println("Produto de maior preço é "+vet1[id_max]);
		
		return id_max;
	}
note que deve haver pelo menos um elemento nos vetores.

bons estudos
Att

F

O problema é o seguinte:

Tenho dois arrays: um tipo String contendo nome dos produtos e o outro tipo int contendo os preços dos produtos.

Tenho que determinar o nome e o preço do produto mais caro.

Como resolvo isto, utilizando um método? É possível passar como parametros dois arrays, um tipo string e o outro tipo int?

Pois tenho que retornar o maior preço e também o nome do produto. E o método permite que retorne apenas um valor.

Qual a melhor forma para se resolver?

Rafael_Marques1

se vc quiser trabalhar apenas com array, ou sempre que vc inserir um produto e um preço, vc coloca utilizando o mesmo indice, ou cria uma matriz de string contendo sempre o nome e o preço.
Se vc utilizar o mesmo indice, vc cria um método que retorne um int por exemplo, recebe os arrays (pode sim receber diferentes arrays por parametro), e retorna apenas o indice que está o produto que vc deseja.

Procure sobre Collections, que resolverá melhor o seu problema.

Adelar

Você retorna então no método o índice do vetor que possui o maior valor. Quando precisar da String e do valor do produto utilize o valor retornado pelo método para obtê-los. Segue um exemplo usando o método do meu post anterior:

// recebe dois vetores, um como os nomes dos produtos e outro com os valores int retorno=getMax(nomes, valores); System.out.println("O produto "+nomes[retorno]+" possui o valor "+valores[retorno]);

nel

Bom dia.

Já ouviu falar em HashMap? Eu diria que supri sua necessidade perfeitamente, sem falar que será muito simples de implementar.
Algo assim:

HashMap<String, Double> hashProdutos = new HashMap<String, Double>();
hashProdutos.put("Cadeira", 10.50);
hashProdutos.put("Mesa", 153.80);
O primeiro atributo diz respeito a sua Key e o segundo a sua Value, quando quiser saber o valor de um produto basta buscar pela sua Key. Para saber o de maior valor, basta iterar pelo hash.
double maior = 0.0;
		int cont = 0;
		Collection<Double> precos = hashProdutos.values();
		for(Double preco : precos) {
			if(maior < preco) {
				maior = preco;
			}
			
			if(cont == 0) {
				maior = preco;
				cont++;
			}		
		}
		System.out.println("Maior preco: "+maior);

Dá para melhorar esta lógica, mas só quis exemplificar.

Abraços.

M

Lembre-se que Java é orientado a objetos e não a arrays. Para uma modelagem melhor crie uma classe Produto e depois crie um método que recebe um List de produtos e retorne o que tem maior preço entre eles (faça Produto implementar Comparable, use o método Collection.sort e retorne o último elemento da lista).

nel

Concordo plenamente marco. Até pensei em sugerir o Comparable mas dei uma ideia diferente. A classe produto contendo preço e depois extraindo o último elemento da Collection (após usar o .sort) torna-se simples e utiliza OO.

Bela dica.

Abraços.

E

Francisco Freitas:
Estou fazendo um programa que utiliza dois arrays. Um tipo string e outro tipo int.

Um contem os nomes de produtos e o outro seus preços.

Preciso determinar qual o produto de maior preço.

Como fazer isso num mesmo método, passando os dois arrays como parametros?

Dica: não use 2 arrays. Use apenas um array, contendo objetos.

Crie uma classe bem simples:

classe Produto {
     public String nome;
     public double preco;
}

E a seguir preencha um array de Produto com os valores que interessam:

Produto[] produtos = new Produto[3];
produtos[0].nome = "jaba";
produtos[0].preco = 23.45;
produtos[1].nome = "macaxeira";
produtos[1].preco = 34.56;
produtos[2].nome = "rapadura";
produtos[2].preco = 78.90;

Uma vez feito isso, crie um método que aceite um array de Produto e retorne o Produto com o maior preço.

Criado 29 de janeiro de 2010
Ultima resposta 30 de jan. de 2010
Respostas 8
Participantes 6