Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: maxplanck en 22 de Diciembre 2016, 22:00
-
Hola, aquí les dejo el código que he escrito para este ejercicio CU00662B del curso de fundamentos de programación orientada a objetos.
Me ha quedado un poco más complejo de lo que me gustaría, pero funciona, creo, que bien. Estoy intentado hacerlo usando switch y un sólo metodo aparte al que llamar para escribir los resultados. Por ahora esto es lo que hay ;D.
import java.util.Scanner;
public class ComparaLetras {
private String texto1;
private String texto2;
public static void main (String [] args) {
System.out.println ("Por favor introduzca la primera palabra");
Scanner palabra1 = new Scanner (System.in);
String texto1 = palabra1.nextLine ();
System.out.println ("Por favor introduzca la segunda palabra");
Scanner palabra2 = new Scanner (System.in);
String texto2 = palabra2.nextLine ();
int i = 0;
if (texto1.length() < texto2.length()) {
for (i = 0;i < texto1.length();i++) {
if (texto1.substring(i,(i + 1)).equals(texto2.substring(i,(i +1)))) {
System.out.println ("¿Letra nº " + (i +1) + " igual en las dos palabras?: true");
}
else {
System.out.println ("¿Letra nº " + (i +1) + " igual en las dos palabras?:false");
}
}
System.out.println ("La palabra \"" +texto2 + "\" tiene mas de " + texto1.length() + " letras.");
}
else if (texto1.length() == texto2.length()) {
for (i = 0;i < texto2.length();i++) {
if (texto1.substring(i,(i + 1)).equals(texto2.substring(i,(i +1)))) {
System.out.println ("¿Letra nº " + (i +1) + " igual en las dos palabras?: true");
}
else {
System.out.println ("¿Letra nº " + (i +1) + " igual en las dos palabras?:false");
}
}
}
else {
for (i = 0;i < texto2.length();i++) {
if (texto1.substring(i,(i + 1)).equals(texto2.substring(i,(i +1)))) {
System.out.println ("¿Letra nº " + (i +1) + " igual en las dos palabras?: true");
}
else {
System.out.println ("¿Letra nº " + (i +1) + " igual en las dos palabras?:false");
}
}
System.out.println ("La palabra \"" +texto1 + "\" tiene mas de " + texto2.length() + " letras.");
}
}
}
Gracias como siempre por vuestro interés. No sé si se esperaba obtener el true o false por algún método getter... me pareció más fácil así.
-
Buenos días.
El ejercicio es correcto.
Otra forma de hacerlo podría ser:
import java.util.Scanner;
public class Comparador1{
public static void main(String[] args){
Scanner entradaScanner= new Scanner(System.in);
System.out.print("Introdusca la primera cadena: ");
String cadena1= entradaScanner.nextLine();
System.out.print("Introdusca la segunda cadena: ");
String cadena2= entradaScanner.nextLine();
System.out.println("Se recibe \"" + cadena1 + "\" y \"" + cadena2 + "\".");
System.out.println("Comparacion:\n");
boolean comparacion=true;
String cadena="1";
for(int i= 0; i < cadena1.length() || i < cadena2.length(); i++){
System.out.print("¿Caracter "+(i+1)+" igual en ambos?: ");
if(i+1 <= cadena2.length() && i+1 <= cadena1.length()){
if(!cadena1.substring(i, i+1).equals(cadena2.substring(i, i+1))){comparacion=false;}
System.out.println(comparacion);
}else{
if(i+1 > cadena2.length()){cadena="2";}
System.out.println("Cadena "+cadena+" no tiene "+(i+1)+" cáracter.");}
}
}
}
En los siguientes enlaces tienes más formas de hacerlo:
https://www.aprenderaprogramar.com/foros/index.php?topic=5691.msg22217#msg22217 (https://www.aprenderaprogramar.com/foros/index.php?topic=5691.msg22217#msg22217)
https://www.aprenderaprogramar.com/foros/index.php?topic=5683.msg22185#msg22185 (https://www.aprenderaprogramar.com/foros/index.php?topic=5683.msg22185#msg22185)
Un saludo
-
Gracias por tu rápida y útil respuesta. Tu código es más bonito y se paraece a lo que pensaba que se podía hacer. No se me habría ocurrido usar comparadores en la sentencia for, buen detalle.