como ya hubiese yo dicho: aprenderJava = "no es sencillo"; aunque si se cumple la siguiente sintaxis, entonces la cosa seria un poco diferente:
if(Moderador.equals(CésarKrall) || Moderador.equals
(CualquierOtroDeLosModeradoresDeAprenderAProgramarEnGeneral))
{aprenderJava = "mas sencillo XD";}
Aquí les dejo mi versión 1.3 del ejercicio CU00662B con mejoras basadas en comentarios hechos por CésarKrall (Moderador)
public class EntradaPorTeclado
//Esta clase recibe una entrada de teclado y almacena lo escrito en la variable de tipo String entrada.
import java.util.Scanner;
public class EntradaPorTeclado
{
private String entrada;
public EntradaPorTeclado()
{
entrada = "";
setEntrada();
}
public void setEntrada()
{
Scanner escaner = new Scanner(System.in);
entrada = escaner.nextLine();
}
public String getEntrada(){return entrada;}
}
public class RectificadorDeEntradaPorTeclado
/*Esta clase resive una entrada de teclado y almacena lo escrito en la variable de tipo String entradaRectificada, siempre que no se indique una cadena vacía (""),
si no se escribe nada, lo que equivale a una cadena vacía ("") se pedirá rectificar lo escrito mientras se escriba una cadena con caracteres*/
import java.util.Scanner;
public class RectificadorDeEntradaPorTeclado
{
private int vacio ;
private String entradaRectificada;
public RectificadorDeEntradaPorTeclado()
{
entradaRectificada = rectificarEntradaPorTeclado();
vacio = entradaRectificada.length();
}
public String rectificarEntradaPorTeclado()
{
Scanner escaner = new Scanner(System.in);
entradaRectificada = escaner.nextLine();
if(entradaRectificada.length() == 0)
{
do{
System.out.println("aun no as escrito nada, por favor introduce una cadena.");
entradaRectificada = escaner.nextLine();
vacio = entradaRectificada.length();
}while(vacio == 0);
}
else
{
entradaRectificada = entradaRectificada;
}
return getEntradaRectificada();
}
public String getEntradaRectificada(){return entradaRectificada;}
}
public class IdentificadorDeCadenaMasLarga
/*Esta clase recibe dos cadenas e identifica la cadena mas larga en caracteres, para mostrar un mensaje por pantalla indicando cual cadena excede a la otra y por cuantos
caracteres la excede, en caso de ambas ser de igual longitud, también lo indica en un mensaje por pantalla*/
public class IdentificadorDeCadenaMasLarga
{
private String cadena1, cadena2;
private int cadenasConIgualLongitud, cadenaMasLarga, cadenaMasCorta;
public IdentificadorDeCadenaMasLarga(String valorCadena1, String valorCadena2)
{
cadena1 = valorCadena1;
cadena2 = valorCadena2;
cadenaMasLarga = 0;
cadenaMasCorta = 0;
cadenasConIgualLongitud = 0;
if(cadena1.length() == cadena2.length())
{
cadenasConIgualLongitud = cadena1.length();
}
else
{
}
if(cadena1.length() > cadena2.length())
{
cadenaMasLarga = cadena1.length();
}
else
{
cadenaMasLarga = cadena2.length();
}
if(cadena1.length() < cadena2.length())
{
cadenaMasCorta = cadena1.length();
}
else
{
cadenaMasCorta = cadena2.length();
}
}
public void identificarCualCadenaExcedeALaOtra()
{
if(cadena1.length() == cadena2.length())
{
System.out.println("\nAmbas cadenas constan de " + cadenasConIgualLongitud + " caracteres.\n");
}
else if(cadena1.length() > cadena2.length())
{
System.out.println("La primera cadena excede por " + (cadenaMasLarga - cadenaMasCorta) +
" caracteres a la segunda cadena.");
}
else if(cadena1.length() < cadena2.length())
{
System.out.println("La segunda cadena excede por " + (cadenaMasLarga - cadenaMasCorta) +
" caracteres a la primera cadena.");
}
}
}
public class ComparadorDeCaracteres
/* Esta clase recibe dos cadenas para hacer una comparación carácter a carácter entre estas dos, y muestra por pantalla cuantos caracteres se compararon, y el resultado
* de la comparación indicando la igualdad o desigualdad entre cada carácter y carácter comparado.*/
public class ComparadorDeCaracteres
{ private int i, cadenaMasCorta;
private String cadena1, cadena2;
public ComparadorDeCaracteres(String valorCadena1, String valorCadena2)
{
i = 0;
cadenaMasCorta = 0;
cadena1 = valorCadena1;
cadena2 = valorCadena2;
if(cadena1.length() < cadena2.length())
{
cadenaMasCorta = cadena1.length();
}
else if(cadena2.length() < cadena1.length())
{
cadenaMasCorta = cadena2.length();
}
else if(cadena1.length() == cadena2.length())
{
cadenaMasCorta = cadena1.length();
}
}
public void CompararCaracterPorCaracter()
{
if(cadena1.length() == cadena2.length() || cadena2.length() == cadena1.length())
{
System.out.println("Se han comparado los " +
cadena1.length() + " caracteres de cada cadena:");
}
else if(cadena1.length() > cadena2.length())
{
System.out.println("\nPuesto que la primera cadena excede la longitud de la segunda cadena, solo se han comparado los " +
cadena2.length() + " primeros caracteres de cada cadena:");
}
else if(cadena2.length() > cadena1.length())
{
System.out.println("\nPuesto que la segunda cadena excede la longitud de la primera cadena, solo se han comparado los " +
cadena1.length() + " primeros caracteres de cada cadena:");
}
if(cadena1.equals(cadena2))
{
System.out.println("\nHas escrito dos cadenas idénticas, por tanto la comparación entre los " + cadena1.length() +
" caracteres de cada cadena dice que SI son iguales para cada carácter por carácter comparado entre las dos cadenas.");
}
else if(cadena1 != cadena2)
{
do
{
if(cadena1.substring(i,i+1).equals(cadena2.substring(i,i+1)))
{
System.out.println("\nEs el caracter " + (i+1) + " igual en las dos cadenas? SI");
}
else
{
System.out.println("\nEs el caracter " + (i+1) + " igual en las dos cadenas? NO");
}
System.out.println("\b" + cadena1.substring(i,i+1) + " " + cadena2.substring(i,i+1)); i++;
} while((i+1) < cadenaMasCorta + 1);
}
}
}
public class AnalizadorDeCaracteresSobrantes
//Esta clase recibe dos cadenas, analiza los caracteres sobrantes de la cadena mas larga en comparación con la cadena mas corta, los extrae y los muestra en un mensaje por pantalla.
public class AnalizadorDeCaracteresSobrantes
{
private int i;
private String cadena1, cadena2;
public AnalizadorDeCaracteresSobrantes(String valorCadena1, String valorCadena2)
{
i = 0;
cadena1 = valorCadena1;
cadena2 = valorCadena2;
}
public void ExtractorDeCaracteresSobrantes()
{
if(cadena1.length() > cadena2.length())
{
do
{
System.out.println("\bCaracter " + (cadena2.length() + (i+1)) + ": " + cadena1.substring(cadena2.length() + i, cadena2.length() + (i+1))); i++;
}
while((cadena2.length() + (i+1)) < cadena1.length() + 1);
}
else if(cadena1.length() < cadena2.length())
{
do
{
System.out.println("\bCaracter " + (cadena1.length() + (i+1)) + ": " + cadena2.substring(cadena1.length() + i, cadena1.length() + (i+1))); i++;
}
while((cadena1.length() + (i+1)) < cadena2.length() + 1);
}
}
}
public class AnalizadorDeVocales
/*Esta clase recibe una cadena, analiza las vocales existentes en esta, las extrae y las muestra en un mensaje por pantalla, en caso de la cadena no tener ninguna vocal, también
lo indica en un mensaje por pantalla.*/
public class AnalizadorDeVocales
{
private String cadena;
private int i, vocal;
public AnalizadorDeVocales(String valorCadena)
{
cadena = valorCadena;
i = 0;
vocal = 1;
}
public void extractorDeVocales()
{
while( i < cadena.length())
{
if(cadena.substring(i,(i+1)).equals("a") || cadena.substring(i,(i+1)).equals("e") ||
cadena.substring(i,(i+1)).equals("i") || cadena.substring(i,(i+1)).equals("o") ||
cadena.substring(i,(i+1)).equals("u") || cadena.substring(i,(i+1)).equals("A") ||
cadena.substring(i,(i+1)).equals("E") || cadena.substring(i,(i+1)).equals("I") ||
cadena.substring(i,(i+1)).equals("O") || cadena.substring(i,(i+1)).equals("U"))
{
System.out.println("\bVocal " + vocal++ + ": " + cadena.substring(i,(i+1)));
} i++;
}
if(vocal++ == 1)
{
System.out.println("\bno se han detectado vocales en esta cadena.");
}
}
}
public class ComparadorDeCadenas (clase con método main)
// Esta clase con el método main, usa otras clases para recibir dos cadenas y mostrar por pantalla el resultado de la comparación entre estas dos cadenas.
public class ComparadorDeCadenas //clase con método main
{
//nada que declarar.
public ComparadorDeCadenas()
{
//nada que declarar.
}
public static void main(String []args)
{
String entrada1 = "", entrada2 = "", volver = "";
System.out.println
("\bHola\nvamos a hacer una comparación carácter por carácter entre dos cadenas, para así determinar la igualdad o desigualdad entre sus caracteres.\n");
do
{
System.out.println("Por favor introduce la primera cadena");
entrada1 = entradaDeTeclado();
if(entrada1.length() == 0)
{
System.out.println("Disculpa, pero no as escrito nada, por favor introduce la primera cadena.");
entrada1 = rectificadorDeEntradaDeTeclado();
}
System.out.println("ahora introduce la segunda cadena ");
entrada2 = entradaDeTeclado();
if(entrada2.length() == 0)
{
System.out.println("Disculpa, pero no as escrito nada, por favor introduce la segunda cadena.");
entrada2 = rectificadorDeEntradaDeTeclado();
}
System.out.println("\n\b\fResultados:\nPrimera cadena: " + entrada1 + "\nSegunda cadena: " + entrada2 + "\n");
IdentificadorDeCadenaMasLarga entradaExcedente = new IdentificadorDeCadenaMasLarga(entrada1, entrada2);
entradaExcedente.identificarCualCadenaExcedeALaOtra();
ComparadorDeCaracteres comparar = new ComparadorDeCaracteres(entrada1, entrada2);
comparar.CompararCaracterPorCaracter();
if(entrada1.length() > entrada2.length())
{
System.out.println("\nEstos son los caracteres sobrantes de la primera cadena: ");
}
else if(entrada2.length() > entrada1.length())
{
System.out.println("\nEstos son los caracteres sobrantes de la segunda cadena: ");
}
AnalizadorDeCaracteresSobrantes caracteresSobrantes = new AnalizadorDeCaracteresSobrantes(entrada1, entrada2);
caracteresSobrantes.ExtractorDeCaracteresSobrantes();
System.out.println("\nEstas son las vocales detectadas en la primera cadena, enumeradas por orden de aparición:");
AnalizadorDeVocales vocalesEntrada1 = new AnalizadorDeVocales(entrada1);
vocalesEntrada1.extractorDeVocales();
System.out.println("\nEstas son las vocales detectadas en la segunda cadena, enumeradas por orden de aparición:");
AnalizadorDeVocales vocalesEntrada2 = new AnalizadorDeVocales(entrada2);
vocalesEntrada2.extractorDeVocales();
System.out.println("\nNota: (Esta comparación diferencia MAYÚSCULAS de minúsculas)\nSi deseas volver a comparar dos cadenas escribe \"" +
"si\" o simplemente presiona enter para finalizar.\n");
volver = entradaDeTeclado();
}while(volver.equals("si") || volver.equals("Si") || volver.equals("SI") || volver.equals("sI"));
System.out.println("Gracias por comparar cadenas\nhasta luego! ");
}
/*estos métodos son de pocas lineas, pero al utilizarlos con frecuencia preferí hacerlos independientes y no escribirlos cada vez directamente en el método main.*/
//método entradaDeTeclado(); crea una entrada de teclado para que el usuario escriba lo que desee o necesite escribir, y almacena lo escrito en la variable String entrada.
private static String entradaDeTeclado()
{
EntradaPorTeclado entrada = new EntradaPorTeclado();
return entrada.getEntrada();
}
/**/
//metodo rectificadorDeEntradaDeTeclado(); supervisa que la entradaDeTeclado(); no sea una cadena vacía ("") y de ser así deniega la acción dando la opción de volver a escribir.
private static String rectificadorDeEntradaDeTeclado()
{
RectificadorDeEntradaPorTeclado rectificar = new RectificadorDeEntradaPorTeclado();
return rectificar.getEntradaRectificada();
}
}
Salu2!