/*
* Programa Elaborado para la Clase de Fundamentos de Programacion
* M.C.Adrián Morales Gálvez
* Fecha: 09-Noviembre-2011
*/
package palindromo;
import java.util.*;
/**
* Instituto Tecnológico de Acapulco
* Se utiliza dos tipos de datos no primitivos, o mejor dicho de tipo String
* utilizando un metodo de la clase String llamado:
* toCharArray() // que se utiliza para convertir la cadena en un Arreglo de tipo caracter
* y posteriormente se pasan los caracteres de manera invertida a otro arreglo de tipo char
* y por ultimo se copian los caracteres a la cad2 para compararla con la cadena de entrada opc
* utilizando el metodo equals para comprobar si son iguales.
*/
public class Palindromo
{
String opc = new String();
String cad2 = new String();
static Scanner Lee = new Scanner(System.in);
void Forma1_palindromo()
{
System.out.println("\n\n******** FORMA 1 PALINDROMO **********");
System.out.print("\nEscribe la cadena a Comprobar : ");
opc= Lee.next();
int j= opc.length()-1;
cad2="";
for(int i=0;i<=j;i++)
{
cad2=cad2+opc.charAt(j-i); //copia el ultimo caracter de la cadena opc ala cad2 y asi sucesivamente...
}
if(opc.equals(cad2)) // Compara la cadena opc con la cadena cad2, si son iguales imprime es un palindromo
{
System.out.println(" Es un palindromo");
}
else
System.out.println(" No es un palindromo..");
}
void Forma2_palindromo()
{
System.out.println("\n\n******** FORMA 2 PALINDROMO **********");
System.out.print("\nEscribe la cadena a Comprobar : ");
opc= Lee.next();
int j= opc.length()-1;
char A[] = new char[j+1]; // Se declara un arreglo A de tipo char, y de tamaño j+1
char B[] = new char[j+1]; // Se declara un arreglo B de tipo char, y de tamaño j+1
A=opc.toCharArray(); // Se convierte en un Arreglo de caracteres la cadena opc y se pasa al Arreglo A;
for(int i=0;i<=j;i++)
{
//A[i]=opc.charAt(i); // Se pasan los caracteres de la cadena (opc) al arreglo de tipo char A[]
B[i] =A[j-i]; // Se invierte el orden de caracteres a otro arreglo de tipo char B[]
}
int ban=0; // Se declara una variable de tipo entera para utilizarla en la comparacion de los arreglos A y B
for(int i=0;i<j;i++)
{if(A[i]==B[i]) // Se compara cada uno de los dos caracteres de los arreglos A[] y B[] de tipo caracter
{ ban++;
}
}
if(ban==opc.length()-1) // Significa que todos los caracteres son iguales en los dos Arreglos y por ende entonces la cadana
{ // de entrada (opc) es un palindromo
System.out.println(" Es un palindromo");
}
else
System.out.println(" No es un palindromo..");
}
// Con la palabra static, puede ser llamado el metodo mensaje desde el metodo main, sin necesidad de ser instanciada por
// un objeto...
static void Mensaje(String m)
{
System.out.print(m);
}
public static void main(String[] args)
{
Palindromo obj = new Palindromo();
int opc;
do{
Mensaje("\n\n***********MENU PRINCIPAL DEL PROGRAMA********");
Mensaje("\n1. Forma 1 de Comprobar si la palabra es un PALINDROMO");
Mensaje("\n2. Forma 2 de Comprobar si la palabra es un PALINDROMO");
Mensaje("\n3. Para salir..>> ");
opc=Lee.nextInt();
switch(opc)
{
case 1: obj.Forma1_palindromo();break;
case 2: obj.Forma2_palindromo();break;
case 3: break;
default:
Mensaje("Opción no valida, escribe la opcion correcta, ok");
}
}while(opc!=3); // Se repite mientras la variable opc sea diferente del numero 3
}
}