Sentinela

7 respostas
marcelocaixeta
Estou com um problema no while. O aplicativo abaixo sempre trava quando a tecla enter é pressionada antes de entrar com os valores. Alguém tem uma solução para que isso não aconteça?

/<em>Um palíndromo é uma seqüência de caracteres que é lida da esquerda para

direita ou da direita para esquerda. Por exemplo, cada um dos seguintes

inteiros de cinco dígitos é um palíndromo: 12321, 55555, 45554 e 11611.

Escreva um aplicativo que solicite ao usuário que informe um inteiro de

cinco dígitos e determine se ele é um palíndromo ou não. Se o numero não

for de cinco dígitos exiba uma mensagem de erro e permita que o usuário

insira um novo valor. O programa devera ser finalizado quando o numero

informado for -1.</em>/

import java.util.Scanner;

public class Palindromo

{

public static void main( String args[] )

{

Scanner input = new Scanner (System.in);
System.out.println(" Entre com um numero de 5 digitos a ser verificado, -1 para encerrar: ");
         int num;
     do
     {
    	 String str = input.nextLine();
    	 
         num = Integer.parseInt(str);
     
     if(str.length() != 5)
     {
    	 System.out.println(" Numero não possui cinco digitos, digite outro valor: ");
     }
     else
     {
    	char x = str.charAt(0);
    	char y = str.charAt(1);
    	char z = str.charAt(3);
    	char w = str.charAt(4);
    	
    	if((x == w) && (y == z))
    		System.out.println(" O numero "+str+" é palíndromo!");
    	else
    		System.out.println(" O numero "+str+" não é palíndromo!");
    	
     }
   }while (num != -1  );
     System.out.println("\n Fim do programa! "); 
   }

}

7 Respostas

T

a unica solucao q eu consigo pensar agora eh nao usar Scanner…

marcelocaixeta

Existe outra classe que permite a leitura de dados?

T

ou entao, utilize o nextLine() para pegar uma string e faça o parse dele p/ inteiro (com Integer.parseInt (String))
se for apertado enter antes de digitar qq coisa, a string tem tamanho 0

Sombriks

Rapaz, testei aqui, mexi umas besteiras, é verdade, mas non achei o pro q vc indicou. funcionou perfeito;

import java.util.Scanner;
public class Palindromo {
	public static void main( String args[] ){

		Scanner input = new Scanner (System.in);
		System.out.println(" Entre com um numero de 5 digitos a ser verificado, -1 para encerrar: ");
		int num=0;
		do{
			String str="0";
			str = input.nextLine();
			try{
				num = Integer.parseInt(str);
			}catch(NumberFormatException nfe){
				System.out.println("Isto não é número!");
			}
			if(str.length() != 5){
				System.out.println("Numero não possui cinco digitos, digite outro valor: ");
			}else{
				char x = str.charAt(0);
				char y = str.charAt(1);
				char z = str.charAt(3);
				char w = str.charAt(4);
				
				if((x == w) && (y == z))
					System.out.println(" O numero "+str+" é palíndromo!");
				else
					System.out.println(" O numero "+str+" não é palíndromo!");
			}
		}while (num != -1 );
		System.out.println("Fim do programa!");
	}
}

plataforma: Slackware 11 Linux 2.4.33.3, jdk6-rc-nov, usando o kate (hahaha) como IDE.

Sombriks
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
(...)

String str = buff.readLine();

Decorei isso no segundo semestre do ensino técnico, :smiley: agora q vc me ensisnou a usar o Scanner, ah, sim, bem mais charmoso!

LPJava

n entendi exatamente qual sua duvida? lembre-se que no palindromo o primeiro digito e o ultimo sempre tem q ser iguais… hehe!!

renatoes
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));

E eu já fui mal em provas por causa do bendito InputStreamReader :roll:

Não seria pq vc está lendo o valor dentro do laço? Tente ler o valor pela primeira vez fora do laço, veja se existe alguma modificação

[]'s

Criado 2 de dezembro de 2006
Ultima resposta 2 de dez. de 2006
Respostas 7
Participantes 5