PALINDROMO
COMO PUEDO REALIZAR UN PROGRAMA QUE DIGA SI LA PALABRA QUE ESCRIBO ES PALINDROMO O NO LO ES.
import java.io.*;
class Palindromo{
public static void main(String[]arg){
int inicio,fin;
String cad;
char arr[]=new char[100];
boolean band=true;
Leer ob=new Leer();
System.out.print("Da la cadena (sin espacion): ");
cad=ob.dato();
fin=cad.length()-1;
inicio=0;
for(int i=0;i<=fin;i++){
arr[i]=cad.charAt(i);
}
while (inicio<fin);
if(arr[inicio]!=arr[fin]){
band=false;
}
inicio=inicio+1;
fin=fin-1;
if(band==true){
System.out.println("La cadena es un palindromo");
}else{
System.out.println("La cadena no es un palindromo");
}
}
}
ESTO ES LO QUE TENGO PERO NO SE CUAL ES MI ERROR PORQUE AL EJECUTARLO NO ME DICE SI LA PALABRA QUE ESCRIBO ES PALINDROMO O NO.
import java.io.*;
class Palindromo{
public static void main(String[]arg){
int inicio,fin;
String cad;
char arr[]=new char[100];
boolean band=true;
Leer ob=new Leer();
System.out.print("Da la cadena (sin espacion): ");
cad=ob.dato();
fin=cad.length()-1;
inicio=0;
for(int i=0;i<=fin;i++){
arr[i]=cad.charAt(i);
}
while (inicio<fin);
if(arr[inicio]!=arr[fin]){
band=false;
}
inicio=inicio+1;
fin=fin-1;
if(band==true){
System.out.println("La cadena es un palindromo");
}else{
System.out.println("La cadena no es un palindromo");
}
}
}
ESTO ES LO QUE TENGO PERO NO SE CUAL ES MI ERROR PORQUE AL EJECUTARLO NO ME DICE SI LA PALABRA QUE ESCRIBO ES PALINDROMO O NO.
Hola
Pues no te dice si es palÃndromo o no: se limita a guardar un respetuoso silencio.
El problema es que tienes un bucle infinito como un castillo. Revisa tu código:
...
cad = ob.dato();
fin = cad.length() - 1;
inicio = 0;
for (int i = 0 ; i <= fin ; i++) {
arr[i] = cad.charAt(i);
}
while (inicio < fin);
...
La variable fin contiene el Ãndice del último carácter en cad.
La variable inicio vale 0.
Ejecutas un bucle for para rellenar el array (que como te metan más de 100 caracteres la hemos liado, por cierto, y hay palÃndromos más largos que esa cantidad). Este bucle no te modifica ninguno de los dos valores anteriores.
Y seguidamente ejecutas un maravilloso
while (inicio < fin);
que se ejecutará por el resto de la eternidad de no ser que la entrada sea la cadena vacÃa (que, efectivamente, es palÃndroma).
¿Por qué no utilizas StringBuffer.reverse() y comparas?
public static boolean esPalindromo(String cadena) {
return (new StringBuffer(cadena).reverse().toString()).equals(new StringBuffer(cadena).toString());
}
¿A que es más molón?
Salud
David
Pues no te dice si es palÃndromo o no: se limita a guardar un respetuoso silencio.
El problema es que tienes un bucle infinito como un castillo. Revisa tu código:
...
cad = ob.dato();
fin = cad.length() - 1;
inicio = 0;
for (int i = 0 ; i <= fin ; i++) {
arr[i] = cad.charAt(i);
}
while (inicio < fin);
...
La variable fin contiene el Ãndice del último carácter en cad.
La variable inicio vale 0.
Ejecutas un bucle for para rellenar el array (que como te metan más de 100 caracteres la hemos liado, por cierto, y hay palÃndromos más largos que esa cantidad). Este bucle no te modifica ninguno de los dos valores anteriores.
Y seguidamente ejecutas un maravilloso
while (inicio < fin);
que se ejecutará por el resto de la eternidad de no ser que la entrada sea la cadena vacÃa (que, efectivamente, es palÃndroma).
¿Por qué no utilizas StringBuffer.reverse() y comparas?
public static boolean esPalindromo(String cadena) {
return (new StringBuffer(cadena).reverse().toString()).equals(new StringBuffer(cadena).toString());
}
¿A que es más molón?
Salud
David
Hola
Ahà va un palÃndromo de 117 caracteres para que hagas tus pruebas:
alliporlatropaportadotraidoaeseparajedemaniobrasunatipacomocapitanusarboinamedejarapeseaodiartodatropaportalropilla
Queda más legible asÃ:
Allà por la tropa portado, traÃdo a ese paraje de maniobras, una tipa como capitán usar boina me dejara, pese a odiar toda tropa por tal ropilla.
Su autor se llama Luis Torrent.
Salud
David
Ahà va un palÃndromo de 117 caracteres para que hagas tus pruebas:
alliporlatropaportadotraidoaeseparajedemaniobrasunatipacomocapitanusarboinamedejarapeseaodiartodatropaportalropilla
Queda más legible asÃ:
Allà por la tropa portado, traÃdo a ese paraje de maniobras, una tipa como capitán usar boina me dejara, pese a odiar toda tropa por tal ropilla.
Su autor se llama Luis Torrent.
Salud
David