Pesquisar e obter o resultado em arrays

10 respostas
milicofelix

Tentei exaustivamente fazê-lo, até deu “certo”, o caso eh q o resultado não eh o esperado!

[b]Implemente uma classe que represente um produto DVD em uma loja. O produto deve possuir um código, o nome do DVD, o nome do cantor/grupo e o estilo musical. (Valor total da questão: 7,0)

a) Crie construtores sobrecarregados. (Valor do item: 1,0)

b) Crie os respectivos atributos com visibilidade private. Crie os respectivos métodos com visibilidade public. (Valor do item: 0,5).

c) Crie os métodos gets e sets necessários. (Valor do item: 1,5).

d) Crie uma outra classe para mostrar a manipulação do objeto Produto criado. (Valor do item: 4,0)

Essa classe deve:
  • permitir o cadastro de 3 DVDs.
  • Após o cadastro dos DVDs, solicitar que o usuário informe um estilo musical. O programa deve mostrar na tela os dados de todos os DVD?s existentes ao referido estilo musical. Caso não encontre nenhum DVD, informar da sua inexistência.[/b]

Não quero enganar ninguém, q isto aqui eh uma liçãozinha de casa da Facul!

Mas, peço encarecidamente q me dêem uma forcinha, obrigado!

10 Respostas

milicofelix

vejam minha classe abaixo:

public class Produto_DVD {
	
	private String nome_DVD, nome_Cantor, estilo_musical;
	private int codigo;

    public Produto_DVD() {
    	
    	nome_DVD = "";
    	nome_Cantor= "";
    	estilo_musical = "";
    	codigo = 0;
    }
    
  public Produto_DVD(String sndvd,String sncantor,String sestilo, int icodigo){
  	
  	nome_DVD = sndvd;
  	nome_Cantor = sncantor;
  	estilo_musical = sestilo;
  	codigo = icodigo;  
  }  
  	
  	public void setNomeDVD(String sndvd){
  		
  		nome_DVD = sndvd;
  		
  	}
  	public void setCantor(String sncantor){
  		
  		nome_Cantor = sncantor;
  	}
  	public void setEstilo(String sestilo){
  		
  		estilo_musical = sestilo;
  	}
  	public void setCodigo(int icodigo){
  		
  		codigo = icodigo;
  	}
  	
  	public String getNomeDVD(){
  		return nome_DVD;
  	}
  	public String getCantor(){
  		return nome_Cantor;
  	}
  	public String getEstilo(){
  		return estilo_musical;
  	}
  	public int getCodigo(){
  		return codigo;
  	}
    
    
}
milicofelix

Agora vejam a manipulaçao da classe acima:

import javax.swing.*;

public class UsaProdutoDVD {
        

    public static void main(String args[]) {
       
       Produto_DVD dvd[][] = new Produto_DVD[3][4];                       
      
         
       for(int linha=0; linha<=2; linha++){
       	
       	for(int coluna=0; coluna<=3; coluna++){
       		dvd[linha][coluna]=new Produto_DVD();
       		
       	if(coluna==0)
       			dvd[linha][coluna].setNomeDVD(JOptionPane.showInputDialog("Digite o nome do DVD"));
       			
       	else if(coluna==1)
       			dvd[linha][coluna].setCantor(JOptionPane.showInputDialog("Digite o nome do cantor"));	
       	
       	else if(coluna==2)
       			dvd[linha][coluna].setCodigo(Integer.parseInt(JOptionPane.showInputDialog("Digite o código do DVD")));
       			
       		
       	else if(coluna==3)
       			dvd[linha][coluna].setEstilo(JOptionPane.showInputDialog("Digite o estilo musical"));
       			       		       		
       		
       	}
       	
       }
       
       String pesquisar = JOptionPane.showInputDialog("Pesquisa de estilo");
       String armazenaDVD ="";      
       
       for(int li=0; li<=2; li++){
       	for(int col=0; col<=3; col++){       		       			    				
       			
       		 armazenaDVD = armazenaDVD + dvd[li][col].getNomeDVD()+"\n";      		       			
       			
       		}
       	       }
       	       
       	       if(pesquisar.equalsIgnoreCase(armazenaDVD)){
       	       
       	       
       	       JOptionPane.showMessageDialog(null,armazenaDVD);
       }
       else if(!pesquisar.equalsIgnoreCase(armazenaDVD)){
       	
       	       JOptionPane.showMessageDialog(null,"Estilo não encontrado!");
       }
       System.exit(0);
       
       	}
}
victor.godinho

Fazer a lição de casa ôô filhote?? hahahahaha, onde está a sua dúvida no exercício? Coloca ela e agente ajuda.

Falows

rpfragoso

:?:

milicofelix

Olá companheiro, obrigado pela atenção!

O caso eh o seguinte:

Eu gostaria que após digitar um estilo de música a pesquisar, o resultado final me mostrasse todos os nomes dos DVDs cadastrados com mesmo estilo pesquisado.

Como vc pode vê acima, meu código, está compilando, mas o resultado não eh o esperado, pois aparece o resultado do comando if else mesmo contendo o estilo de música pesquisada.

Acredito q seja pq eu não sei, compara uma String diferenciando-a de outra. Por exemplo, em variáveis do tipo int, difença eh com “!=”, já nas Strings isto dá errado.

já tentei tb “!=pesquisar,equalsIgnoreCase(…)”, mesmo assim dá erro de sintaxe.

O q eu faço?

Agradeço desde já!

ViniGodoy

Algumas dúvidas:

  1. Pq seu array de DVDs é bidimensional?
  2. O if não deveria estar dentro do for?
  3. Pq vc está concatenando o nome de todos os DVDs numa única string?
Z111

Compara ae.

Simplifiquei um pouco seu codigo. Qq duvida sobre a logica, pergunte.

Mas por favor, não apenas copie e cole, tente entender o q acontece 8)

public class Dvd {

	private int id;
	private String nome;
	private String cantor;
	private String estilo;
	
	public Dvd() {}
	
	public Dvd(String cantor, String estilo, int id, String nome) {
		super();
		this.cantor = cantor;
		this.estilo = estilo;
		this.id = id;
		this.nome = nome;
	}

	/**
	 * @return the id
	 */
	public int getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**
	 * @return the nome
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * @param nome the nome to set
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	/**
	 * @return the cantor
	 */
	public String getCantor() {
		return cantor;
	}

	/**
	 * @param cantor the cantor to set
	 */
	public void setCantor(String cantor) {
		this.cantor = cantor;
	}

	/**
	 * @return the estilo
	 */
	public String getEstilo() {
		return estilo;
	}

	/**
	 * @param estilo the estilo to set
	 */
	public void setEstilo(String estilo) {
		this.estilo = estilo;
	}
}
import javax.swing.JOptionPane;

public class Main {

	public static void main(String[] args) {
		Dvd[] dvds = new Dvd[3];
		
		// insere
		for (int i = 1; i <= 3; ++i) {
			Dvd dvd = new Dvd();
			
			dvd.setId(i);
			dvd.setNome(JOptionPane.showInputDialog("Nome do DVD: "));
			dvd.setCantor(JOptionPane.showInputDialog("Nome do candor/grupo: "));
			dvd.setEstilo(JOptionPane.showInputDialog("Estilo: "));
			
			dvds[i -1] = dvd; 
		}

		// pesquisa
		while (true) {
			String s = JOptionPane.showInputDialog("Digite o estilo a pesquisar ou X para sair");
			
			if (s.equalsIgnoreCase("x")) break;
			
			boolean achou = false;
			
			for (int i = 0; i  < dvds.length; ++i) {
				if (achou = s.equalsIgnoreCase(dvds[i].getEstilo())) {
					JOptionPane.showMessageDialog(null, dvds[i].getNome() + " - " + dvds[i].getCantor());
					break;
				}
			}
			
			if (!achou)
				JOptionPane.showMessageDialog(null, "Não encontrado");
		}
	}
}
milicofelix

Alguém com mais experiência em java do que eu sabe o que eu devo fazer no seguinte erro:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Ex3.main

Ex3 é a minha classe, ela compila normalmente mas não executa e aparece o erro descrito acima.

Agradeço desde já!

public class Ex3{
	public static void main(String a[]){
		int valor1 = Integer.parseInt(a[0]);
		int quant1 = Integer.parseInt(a[1]);
		int valor2 = Integer.parseInt(a[2]);
		int quant2 = Integer.parseInt(a[3]);
		int valor3 = Integer.parseInt(a[4]);
		int quant3 = Integer.parseInt(a[5]);
		int resultado = valor1 * quant1 + valor2 * quant2 + valor3 * quant3;
		System.out.println("Resultado = " + resultado);
		

	}
}
T
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0

Vamos lá.

Na linha 3, que é:

int valor1 = Integer.parseInt(a[0]);

você tentou obter o valor de a[0]. Só que provavelmente você não passou parâmetro nenhum para o programa (sabe como é, só para testar mesmo …) e o que ocorreu é que você tentou acessar um valor inexistente. Nesse caso, o Java não tem dó nem piedade e vai embora.

T

Outra dica - você sabe como Java é a mesma coisa que Cobol, ou seja, é cheio de convenções e gente chata e cheia de frescura que trabalha com Java. Isso é um problema de algo que é usado por muita gente.

Então uma das convenções (não-escritas) do Java é que não é legal mudar o nome do argumento para o método main, que tradicionalmente é “args”, não “a”.

Só vou lhe avisando, porque você vai acabar encontrando um cara chato como eu que vai implicar com uma perfumaria dessas e nem vai ver que o seu programa está funcionando perfeitamente.

Criado 8 de agosto de 2008
Ultima resposta 19 de set. de 2008
Respostas 10
Participantes 6