Problemas com o case 1 alterar!

Bom pessoal, estou com problemas com o opção alterar do menu não está funcionando corretamente e não consigo encontrar a falha…

[code]package avaliacaoTurma02;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import javax.swing.JOptionPane;

import avaliacaoTurma02.DaoXML;
import avaliacaoTurma02.Cidade;

public class CadastroCidades {

static InterfaceDao dao=new DaoXML();

private static String leTexto(String msg, String valor){
	String retorno = null;
	while ((retorno == null) || (retorno.trim().length()==0)){
		retorno = JOptionPane.showInputDialog(msg, valor);
	}
	return retorno;
}

private static int leInteiro(String msg, String valor){
	String strNumero = null;
	int numero=0;
	boolean numeroValido=false;
	while (!numeroValido){
		try {
			strNumero = JOptionPane.showInputDialog(msg, valor);
			numero= Integer.parseInt(strNumero);
			numeroValido=true;
		} catch (NumberFormatException e){
			JOptionPane.showMessageDialog(null, "Valor informado: " + strNumero + " não é um numero valido");
			numeroValido=false;
		}
	}
	return numero;
}
	
	private static int leInteiro2(String msg, String valor){
		String strNumero = null;
		int numero=0;
		boolean numeroValido=false;
		while (!numeroValido){
			strNumero= JOptionPane.showInputDialog(msg, valor);
			if ((strNumero!=null) && (strNumero.trim().length()>0) && (strNumero.matches("\d*"))){
				numero= Integer.parseInt(strNumero);
				numeroValido=true;
			}
		}
		return numero;
	}
	
public static void main(String[] args) {
	
	DaoXML dados = new DaoXML();

	String[] opcoes = {"Novo", "Altera", "Remove", "Listar", "Sai"};
	
	int contador = 0;
	//Enquanto nao sair Loop
	while (true){
		String nome, uf, strCodigo;
		//Le opcao de cadastro
		int opcao = JOptionPane.showOptionDialog(null, "Escolha a opção de cadastro",
				"Menu de cadastro",0, JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[4]);
		switch (opcao){
		//Se novo
		case 0:
			nome = JOptionPane.showInputDialog("Entre com o nome da cidade !");
			uf = JOptionPane.showInputDialog("Entre com o uf do estado !");
			if ((nome == null) || (nome.trim().length()== 0));
			if ((uf == null) || (uf.trim().length() == 0));
			Cidade cidade = new Cidade(++contador, nome,uf);
			dados.salvar(cidade);
			//dados.gravaDados();
			break;
		//Se altera	
		case 1:
			//Le identificador
			strCodigo = JOptionPane.showInputDialog("Entre com o codigo da cidade !");
			//Busca elemento a ser alterado
			Cidade cidade1 = new Cidade(Integer.parseInt(strCodigo), null, strCodigo);
			Cidade cadastrado = (Cidade)dados.consultar(cidade1);
			if (cadastrado != null) {
			//Le dados alterados
			nome = JOptionPane.showInputDialog("Entre com o nome da cidade!", cadastrado.getNome());
			uf = JOptionPane.showInputDialog("Entre com o uf do estado!", cadastrado.getUf());
			//Grava dados
			dados.salvar(cadastrado);
			} else {
				JOptionPane.showMessageDialog(null, "Cidade não cadastrada !");
			}
			break;
		//Se remove
		case 2:
			//Le identificador
			strCodigo = JOptionPane.showInputDialog("Entre com o codigo da cidade!");
			//Busca elemento a ser alterado
			Cidade removido =
				(Cidade)dados.consultar(new Cidade(Integer.parseInt(strCodigo),null, strCodigo));
			if (removido != null){
				//Remove dados
				dados.remover(removido);
				dados.gravaDados();
		} else {
			JOptionPane.showMessageDialog(null, "Cliente não cadastrado");
		}
			break;			
		//Se lista
		case 3:
			// Obtem lista de cidades
			ArrayList lista=new ArrayList(dados.listar(Cidade.class));
			Collections.sort(lista, new Comparator() {
				public int compare(Object o1, Object o2) {
					Cidade c1=(Cidade)o1;
					Cidade c2=(Cidade)o2;
					return c1.getNome().compareTo(c2.getNome());
				}
			});
			// Mostra lista
			JOptionPane.showMessageDialog(null, lista.toArray());
			break;
		//Se sair
		case 4:
			String[] opcaoSaida = {"Sim", "Não"};
			//Pede confirmacao de saidaE
			int opcaoSaida1 = JOptionPane.showOptionDialog(null, "Deseja realmente sair ?",
					"Confirmação de saía",0, JOptionPane.QUESTION_MESSAGE, null, opcaoSaida, opcaoSaida[1]);
			//Se confirma sai
			if (opcaoSaida1 == 0) System.exit(0);
			dados.gravaDados();
			break;
		}
	}
}

	private static void alteraCidade(InterfaceDao dao) {

		
		String strId=JOptionPane.showInputDialog("Entre com o código do cidade");
		Cidade cidade=new Cidade(Integer.parseInt(strId), null, strId);
		
		Cidade cadastrado=(Cidade)dao.consultar(cidade);
		
		if (cadastrado!=null) {
		
			String nome=leTexto("Entre com o nome do cidade", cadastrado.getNome());
			cidade.setNome(nome);
			dao.salvar(cidade);
		} else {
			JOptionPane.showMessageDialog(null, "Cidade não cadastrado");
		}
	}
	
	private static void removeCidade(InterfaceDao dao) {

		
		String strId=JOptionPane.showInputDialog("Entre com o código do cidade");
		Cidade cidade=new Cidade(Integer.parseInt(strId), null, strId);
		Cidade cadastrado=(Cidade)dao.consultar(cidade);

		if (cadastrado!=null) {
			dao.remover(cidade);
		} else {
			JOptionPane.showMessageDialog(null, "Cidade não cadastrado");
		}
	}

	private static void criaCidade(InterfaceDao dao) {
		int codigo=getNextCod();
		Cidade cidade=new Cidade();
		Cidade cadastrado=(Cidade)dao.consultar(cidade);
		
		if (cadastrado==null) {
			
			String nome=JOptionPane.showInputDialog("Entre com o nome do cidade");
			String uf = JOptionPane.showInputDialog("Entre com o estado");
			// Cria objeto Cidade
			cidade.setNome(nome);
			cidade.setUf(uf);
			// Salva objeto cidade
			dao.salvar(cidade);
		} else {
			// Se existe mostra msg
			JOptionPane.showMessageDialog(null, "Cidade já cadastrado");
		}
	}
	private static int contador=0;
	
	private static int getNextCod() {
		return ++contador;
}

}[/code]

Essa classe faz parte do projeto…

[code]package avaliacaoTurma02;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import javax.swing.JOptionPane;

import avaliacaoTurma02.DaoXML;
import avaliacaoTurma02.Cidade;

public class CadastroCidades {

static InterfaceDao dao=new DaoXML();

private static String leTexto(String msg, String valor){
	String retorno = null;
	while ((retorno == null) || (retorno.trim().length()==0)){
		retorno = JOptionPane.showInputDialog(msg, valor);
	}
	return retorno;
}

private static int leInteiro(String msg, String valor){
	String strNumero = null;
	int numero=0;
	boolean numeroValido=false;
	while (!numeroValido){
		try {
			strNumero = JOptionPane.showInputDialog(msg, valor);
			numero= Integer.parseInt(strNumero);
			numeroValido=true;
		} catch (NumberFormatException e){
			JOptionPane.showMessageDialog(null, "Valor informado: " + strNumero + " não é um numero valido");
			numeroValido=false;
		}
	}
	return numero;
}
	
	private static int leInteiro2(String msg, String valor){
		String strNumero = null;
		int numero=0;
		boolean numeroValido=false;
		while (!numeroValido){
			strNumero= JOptionPane.showInputDialog(msg, valor);
			if ((strNumero!=null) && (strNumero.trim().length()>0) && (strNumero.matches("\d*"))){
				numero= Integer.parseInt(strNumero);
				numeroValido=true;
			}
		}
		return numero;
	}
	
public static void main(String[] args) {
	
	DaoXML dados = new DaoXML();

	String[] opcoes = {"Novo", "Altera", "Remove", "Listar", "Sai"};
	
	int contador = 0;
	//Enquanto nao sair Loop
	while (true){
		String nome, uf, strCodigo;
		//Le opcao de cadastro
		int opcao = JOptionPane.showOptionDialog(null, "Escolha a opção de cadastro",
				"Menu de cadastro",0, JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[4]);
		switch (opcao){
		//Se novo
		case 0:
			nome = JOptionPane.showInputDialog("Entre com o nome da cidade !");
			uf = JOptionPane.showInputDialog("Entre com o uf do estado !");
			if ((nome == null) || (nome.trim().length()== 0));
			if ((uf == null) || (uf.trim().length() == 0));
			Cidade cidade = new Cidade(++contador, nome,uf);
			dados.salvar(cidade);
			//dados.gravaDados();
			break;
		//Se altera	
		case 1:
			//Le identificador
			strCodigo = JOptionPane.showInputDialog("Entre com o codigo da cidade !");
			//Busca elemento a ser alterado
			Cidade cidade1 = new Cidade(Integer.parseInt(strCodigo), null, strCodigo);
			Cidade cadastrado = (Cidade)dados.consultar(cidade1);
			if (cadastrado != null) {
			//Le dados alterados
			nome = JOptionPane.showInputDialog("Entre com o nome da cidade!", cadastrado.getNome());
			uf = JOptionPane.showInputDialog("Entre com o uf do estado!", cadastrado.getUf());
			//Grava dados
			dados.salvar(cadastrado);
			} else {
				JOptionPane.showMessageDialog(null, "Cidade não cadastrada !");
			}
			break;
		//Se remove
		case 2:
			//Le identificador
			strCodigo = JOptionPane.showInputDialog("Entre com o codigo da cidade!");
			//Busca elemento a ser alterado
			Cidade removido =
				(Cidade)dados.consultar(new Cidade(Integer.parseInt(strCodigo),null, strCodigo));
			if (removido != null){
				//Remove dados
				dados.remover(removido);
				dados.gravaDados();
		} else {
			JOptionPane.showMessageDialog(null, "Cliente não cadastrado");
		}
			break;			
		//Se lista
		case 3:
			// Obtem lista de cidades
			ArrayList lista=new ArrayList(dados.listar(Cidade.class));
			Collections.sort(lista, new Comparator() {
				public int compare(Object o1, Object o2) {
					Cidade c1=(Cidade)o1;
					Cidade c2=(Cidade)o2;
					return c1.getNome().compareTo(c2.getNome());
				}
			});
			// Mostra lista
			JOptionPane.showMessageDialog(null, lista.toArray());
			break;
		//Se sair
		case 4:
			String[] opcaoSaida = {"Sim", "Não"};
			//Pede confirmacao de saidaE
			int opcaoSaida1 = JOptionPane.showOptionDialog(null, "Deseja realmente sair ?",
					"Confirmação de saía",0, JOptionPane.QUESTION_MESSAGE, null, opcaoSaida, opcaoSaida[1]);
			//Se confirma sai
			if (opcaoSaida1 == 0) System.exit(0);
			dados.gravaDados();
			break;
		}
	}
}

	private static void alteraCidade(InterfaceDao dao) {

		
		String strId=JOptionPane.showInputDialog("Entre com o código do cidade");
		Cidade cidade=new Cidade(Integer.parseInt(strId), null, strId);
		
		Cidade cadastrado=(Cidade)dao.consultar(cidade);
		
		if (cadastrado!=null) {
		
			String nome=leTexto("Entre com o nome do cidade", cadastrado.getNome());
			cidade.setNome(nome);
			dao.salvar(cidade);
		} else {
			JOptionPane.showMessageDialog(null, "Cidade não cadastrado");
		}
	}
	
	private static void removeCidade(InterfaceDao dao) {

		
		String strId=JOptionPane.showInputDialog("Entre com o código do cidade");
		Cidade cidade=new Cidade(Integer.parseInt(strId), null, strId);
		Cidade cadastrado=(Cidade)dao.consultar(cidade);

		if (cadastrado!=null) {
			dao.remover(cidade);
		} else {
			JOptionPane.showMessageDialog(null, "Cidade não cadastrado");
		}
	}

	private static void criaCidade(InterfaceDao dao) {
		int codigo=getNextCod();
		Cidade cidade=new Cidade();
		Cidade cadastrado=(Cidade)dao.consultar(cidade);
		
		if (cadastrado==null) {
			
			String nome=JOptionPane.showInputDialog("Entre com o nome do cidade");
			String uf = JOptionPane.showInputDialog("Entre com o estado");
			// Cria objeto Cidade
			cidade.setNome(nome);
			cidade.setUf(uf);
			// Salva objeto cidade
			dao.salvar(cidade);
		} else {
			// Se existe mostra msg
			JOptionPane.showMessageDialog(null, "Cidade já cadastrado");
		}
	}
	private static int contador=0;
	
	private static int getNextCod() {
		return ++contador;
}

}[/code]

até…

  1. Coloque só o trecho relevante de código;
  2. Diga o que você esperava que acontecesse e o que está acontecendo;
  3. Se houver exceções, diga quais são e aponte em que linha o stacktrace dá erro.
  4. Procure executar o código passo-a-passo com o depurador de sua IDE.

Mas só listar um monte de código e dizer que você tem um problema, não adianta nada.

Qual o erro? O que não está dando certo?

Testei aqui e parece tudo normal.

Abraço

[quote=ViniGodoy]1. Coloque só o trecho relevante de código;
2. Diga o que você esperava que acontecesse e o que está acontecendo;
3. Se houver exceções, diga quais são e aponte em que linha o stacktrace dá erro.
4. Procure executar o código passo-a-passo com o depurador de sua IDE.

Mas só listar um monte de código e dizer que você tem um problema, não adianta nada.[/quote]

Opa, me desculpem foi mal…

Na verdade não está dando nenhum erro, o que acontece é quando altero o nome da cidade, ele não está salvando esta alteração é isso… minha intenção em colocar os codigos era pra ter uma visão melhor do problema, mas na proxima me enquadro nas regras.

obrigado !

nome = JOptionPane.showInputDialog("Entre com o nome da cidade!", cadastrado.getNome()); uf = JOptionPane.showInputDialog("Entre com o uf do estado!", cadastrado.getUf()); //Grava dados dados.salvar(cadastrado); } else { JOptionPane.showMessageDialog(null, "Cidade não cadastrada !"); }

nome e uf são só variáveis… vc não está setando no objeto Cidade.

Abraço

//Le dados alterados nome = JOptionPane.showInputDialog("Entre com o nome da cidade!", cadastrado.getNome()); cadastrado.setNome(nome); uf = JOptionPane.showInputDialog("Entre com o uf do estado!", cadastrado.getUf()); cadastrado.setUf(uf);

Volnei, era isso mesmo … valeu :thumbup: