Cadastro de musicas em java erro pesquisa

6 respostas
marlonezferreira

Bom dia Pessoal,

Estou fazendo um sistema de cadastro de musicas, ele ta cadastrando certinho, mas quando vou pesquisar esta dando pau…Se alguém puder me dar um help!!Abaixo o main, e após minha classe Musica.

package Controle;

import java.util.Vector;

import Modelo.Musica;
import Visao.Util;

public class Principal {
	
 static Vector<Musica> minhasMusicas = new Vector<Musica>();
	
	private static void cadastroMusicas() {
		
		/**lembrar de colocar tratamento de exceçãoo **/
		String nomeArtista = (Util.lerString("Digite o nome do artista: "));
		String nomeMusica = Util.lerString("Digite o nome da música: ");
		String album = Util.lerString("Digite o nome do album:  ");
		String genero = Util.lerString("Digite o genero da musica:  ");
		
		Principal.minhasMusicas.add(new Musica(nomeArtista, nomeMusica, album, genero));	
		
		Util.escreverString("Nome artista: " + nomeArtista + "\nNome música: " + nomeMusica +
				"\nAlbum: " + album + "\nGênero: " + genero);
	}
	
	private static void pesquisarMusicas() {
		/** rotina que verifica se lista vazia **/
		if (Principal.minhasMusicas.isEmpty()) {
			Util.escreverString("Lista de músicas vazia!!");
		}
		else {
			/**lembrar de colocar tratamento de exceção**/
			Musica objTemp;
			boolean encontrado = false; 
			String nomeMusica = (Util.lerString("Digite o nome da música a ser pesquisada: "));
			
			for (int i = 0; i < Principal.minhasMusicas.size(); i++) {
				/** tudo que sai de um objeto tipo Vector deve passar por um casting **/
				objTemp = (Musica) Principal.minhasMusicas.get(i);
				if (nomeMusica == objTemp.getNomeMusica()) {
					boolean encontrou = true;
					Util.escreverString("Nome artista: " + objTemp.getNomeArtista() + "Nome da música: " + objTemp.getNomeMusica() +
							"\nAlbum: " + objTemp.getAlbum() + "\ngenero" + objTemp.getGenero());
					break;
				}
				
				
			if (!encontrado) Util.escreverString("Musica não cadastrada!!");		
			
			}
		}
	
	}
	 
	  
	public static void menu() {
		Util.escreverString("Sejam Bem vindos ao Sistema de Cadastro de Musicas");
		String op;
		do {
			op = Util.lerString("1 - Cadastrar\n" +
					"2 - Pesquisar\n" +
					"3 - Sair");
			
			try {
				switch (Integer.parseInt( op ) ) {
					case 1: Util.escreverString("Entrando no Cadastro");
							Principal.cadastroMusicas();
							break;
					case 2: Util.escreverString("Iniciando Pesquisa das musicas");
							Principal.pesquisarMusicas();
							break;
					case 3:Util.escreverString("Obrigado por usar nosso sistema");;
							break;
				}
			} catch (Exception e) {
				Util.escreverString( "O número deve estar em forma arábica" );
				op = "" +
						"4";
			}			
		} while ( Integer.parseInt( op ) != 3 );
	}

	public static void main(String args[]) {
		Principal.menu();
		System.exit(0); //para o uso de JOptionPane		
	}
}

A partir daqui a minha classe Musica.

package Modelo;

public class Musica {
	
	/** protected  numeroMusica; */
	 
	protected String nomeArtista;
	 
	protected String nomeMusica;
	
	protected String album;
	
	protected String genero;
	 

	public Musica(String nomeArtista, String nomeMusica, String album, String genero) {
		this.nomeArtista = nomeArtista;
		this.nomeMusica = nomeMusica;
		this.album = album;
		this.genero = genero;
	}

	
	public String getNomeArtista() {
		return nomeArtista;
	}

	public void setNomeArtista(String nomeArtista) {
		this.nomeArtista = nomeArtista;
	}

	public String getNomeMusica() {
		return nomeMusica;
	}

	public void setNomeMusica(String nomeMusica) {
		this.nomeMusica = nomeMusica;
	}

	public String getAlbum() {
		return album;
	}

	public void setAlbum(String album) {
		this.album = album;
	}

	public String getGenero() {
		return genero;
	}

	public void setGenero(String genero) {
		this.genero = genero;
	}

	public void alterarNomeArtista(String novoArtista) {
	 
	}
	 
	public void alterarNomeMusica(String novaMusica) {
	 
	}
	 
	public void alterarAlbum(String novoAlbum) {
	 
	}

	public void alteraGenero(){
		
	}
	
	
}

Obrigado
Marlon Ferreira

6 Respostas

mgarcia

Qual é o erro exibido?

A

Na hora que estais comparando

if (nomeMusica == objTemp.getNomeMusica()) {

Quando tu compara String é necessário usar o método .equals .

marlonezferreira

não da erro simplesmente ele dá como não encontrado e vai ao proximo if…então exibre a mensagem música não cadastrada quando na verdade eu ja fiz o cadastro.Vou tentar com o equals

marlonezferreira

PERFEITO. Usei o equals e funcionou!!

Muito Obrigado!!!

A

De nada cara ^^

Isso acontece porque as variáveis do tipo String são objetos.
Por isso que para compará-las você deve utilizar os métodos da classe e não a expressão de igualdade.

[]'s

B

andre.almeida:
De nada cara ^^

Isso acontece porque as variáveis do tipo String são objetos.
Por isso que para compará-las você deve utilizar os métodos da classe e não a expressão de igualdade.

[]'s

Não é bem por aí. Apesar de serem objetos, podem também ser comparados com ==. Se ambas as referências apontarem para uma string no pool de strings o == retornará true, o que não é o caso.

Criado 1 de julho de 2009
Ultima resposta 1 de jul. de 2009
Respostas 6
Participantes 4