Dúvida do livro Java como Programar questão 4.24-Palíndromo

2 respostas
F

Olá pessoal , gostaria de saber o que está errado no meu código . Trata-se da questão 4.24 do livro JAVA COMO PROGRAMAR 3ºEDIÇÃO (capa verde) . Meu problema não está em achar os PALÍNDROMOS OU NÃO PALÍNDROMOS meu problema está em: FAZER UM LAÇO DE REPETIÇÃO QUANDO O NÚMERO DIGITADO POSSUIR MAIS DE 5 DÍGITOS .

questão

4.24 Um Palíndromo é um número ou uma frase de texto lido da mesma forma tanto da esquerda para a direita como da direita para a esquerda. Por exemplo, cada um dos dígitos seguintes é um palíndromo:12321,55555,45554 e 11611.
Escreva um aplicativo que lê um inteiro de cinco dígitos e determina se ele é ou não um palíndromo. [/i][/u]Se o número não for de cinco dígitos, exiba um diálogo de mensagem de erro para indicar o problema ao usuário. Quando o usuário fechar o diálogo de erro, permita que o usuário digite um novo valor.[u][i]

MEU PROBLEMA É COMO FAZER ELE REPETIR O LAÇO, SEI QUE NÃO SE TRATA DE NADA COMPLEXO PORÉM, QUERO MUITO APRENDER JAVA E ESTOU FAZENDO TODAS AS QUESTÕES DO LIVRO SOZINHO MAS PRECISO MESMO DA AJUDA DE PESSOAS MAIS EXPERIENTES EM ALGUMAS QUESTÕES, DESDE JÁ GRATO PELA AJUDA!!!!

import javax.swing.JOptionPane;

public class Questao4_24 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		String num;
		int numero,n1,n2,n3,n4,n5,aux;
		
 		num = JOptionPane.showInputDialog(" Entre com um numero de 5 digitos ");
		numero = Integer.parseInt(num);
		
		while(numero <= 999999){
				if(numero <= 99999){
					
					n1 = (numero/10000);
					aux =(numero%10000);
					n2 = (aux/1000);	
					aux = (numero%1000);
					n3 = (aux/100);
					aux = (numero%100);
					n4 = (aux/10);
					aux = numero%10;
					n5 = aux;
				
					if (n1 == n5)
					{
						if(n2==n4){
								System.out.println(" PALINDROMOS");
								System.exit(0);
							}	
						else{
								System.out.println("NÃO SÃO PALINDROMOS");
								System.exit(0);
							}
					}else
						{
							System.out.println("NÃO SÃO PALINDROMOS");
							System.exit(0);
						}
					}
				
				JOptionPane.showMessageDialog(null,"VALOR INVALIDO ","SE LIGA ",JOptionPane.ERROR_MESSAGE);
				num = JOptionPane.showInputDialog(" DIGITE NOVO VALOR ");
				numero = Integer.parseInt(num);
				
			
				}
					
 		JOptionPane.showMessageDialog(null,"VALOR INVALIDO ","SE LIGA ",JOptionPane.ERROR_MESSAGE);
 		num = JOptionPane.showInputDialog(" DIGITE NOVO VALOR ");
 		numero = Integer.parseInt(num);
	}
		
}

2 Respostas

MarcioCasteloBranco

quando vc usa o Systen.exit(0) vc interrompe o programa vc deveria usar o continue e fazer o input de dados logo abaixo do while.

romarcio
Pode fazer assim:
...
                //cria a string de tamanho zero, pq está fazia.
		String num = "";
	
                //testa a string enquanto ela tiver tamanho diferente de 5 -> o método length() verifica o tamanho de uma string
 		while (num.length() != 5) {
			num = JOptionPane.showInputDialog(" Entre com um numero de 5 digitos ");
		}

		int numero,n1,n2,n3,n4,n5,aux;		
		numero = Integer.parseInt(num);	
...
Criado 23 de dezembro de 2010
Ultima resposta 23 de dez. de 2010
Respostas 2
Participantes 3