Retorno de JOptionPane.showInputDialog

Amigos, tenho o seguinte problema:


bla, bla, bla

for (int i=0 ; i<numEleitores ; i++){

opcao=JOPshowInputDialog(null,"Número Candidato" + numCand);

if (opcao == "" || opcao== null){
JOPshowMessageDialog(null,"votoBranco");
votoBranco = votoBranco + 1;
}
int escolha = Integer.parseInt(opcao);
			//Testa se o número digitado é válido
			
			 if ( escolha != cand1Num & escolha != cand2Num){
				
				JOptionPane.showMessageDialog(null,"Número inválido! Digite novamente");
				i--;
			}
			
					
            //Conforme a opção de votação é armazenada nas variáveis dos candidatos
			else 
				if(escolha == cand1Num) {
				votoCand1 = votoCand1 + 1;
		}
		 		else{
				votoCand2 = votoCand2 + 1;
			
		}
}

bla, bla, bla

Tá acontecendo duas coisas. No teste pra saber se o voto é branco ele só consegue perceber quando é teclado CANCEL, quando é OK ele não reconhece e sai. O outro detalhe é que quando ele aceita a condição do voto branco ele também sai, acho que é porque logo depois da condição do voto branco atendida a variável OPCAO é transformada em inteiro. Tenho que no final voltar a variável OPCAO para STRING??? Como faço isso???

para ver se uma string é vazia utilize

opcao.equals("")

ou 

"".equals(opcao) // essa maneira evita null pointer

Thiago, beleza.

Resolvi o problema do lance da tecla OK, agora o problema é a tecla CANCEL que não acusa votoBranco.

Ficou assim:

if (opcao.equals("")|| opcao == null){ JOptionPane.showMessageDialog(null,"Voto Branco"); votoBranco = votoBranco + 1; }

E com relação ao detalhe de ter que voltar a variável de int para String no final das condições para novo teste. Faço como???

if (opcao.equals("")|| opcao == null || Integer.parseInt(opcao) == JOptionPane.CANCEL_OPTION){ 
.
.
.

teste primeiro se for nulo se fizer o contrario pode da um NullPointerExceprion quando vc tentar testar

teste primeiro se for nulo se fizer o contrario pode da um NullPointerExceprion quando vc tentar testar