Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Alber en 12 de Julio 2017, 21:02
-
Aqui dejo el código del ejercicio de este tema CU00662B del curso práctico de programación orientada a objetos con Java. No es exactamente lo que pide el ejercicio porque he intentado resolverlo creando una clase EntradaTeclado y una clase main TestComparador donde poder ver cómo funcionan diferentes metodos.
Código:
[import java.util.Scanner;
public class EntradaTeclado{
private String texto;
public EntradaTeclado(){
texto="";
pedirEntrada();
}
public void pedirEntrada(){
Scanner entradaEscaner=new Scanner(System.in);
texto=entradaEscaner.nextLine();
}
public String getEntrada(){return texto;}
public String getCaracteres(){
for(int i=0;i<texto.length();i++){
System.out.println("letra"+(i+1)+":"+texto.substring(i,i+1));
}
return (" ");
}
public int getLongitud(){
return texto.length();
}
}
public class TestComparador{
public static void main(String[]args){
System.out.println("Empezamos el programa");
System.out.println("Por favor,introduzca primer texto");
EntradaTeclado entrada1=new EntradaTeclado();
System.out.println("Por favor,introduzca segundo texto");
EntradaTeclado entrada2=new EntradaTeclado();
System.out.println("Gracias");
System.out.println("El primer texto ha sido " +entrada1.getEntrada()+ " y consta de " +entrada1.getLongitud()+ " caracteres");
System.out.println("El segundo texto ha sido " +entrada2.getEntrada()+ " y consta de " +entrada2.getLongitud()+ " caracteres");
System.out.println(entrada1.getCaracteres());
System.out.println(entrada2.getCaracteres());
System.out.println("Comparacion:");
for(int i=0; i<entrada1.getLongitud()||i<entrada2.getLongitud();i++){
System.out.print("¿caracter "+(i+1)+ " es igual en los dos textos?: ");
if(i+1>entrada2.getLongitud()){
System.out.println("texto 2 no tiene "+(i+1)+" caracter");
}
else if(i+1>entrada1.getLongitud()){
System.out.println("texto 1 no tiene "+(i+1)+" caracter");
}
else{
if((entrada1.getEntrada()).substring(i,i+1).equals((entrada2.getEntrada()).substring(i,i+1))){
System.out.println(true);
}
else{
System.out.println(false);
}
}
}
}
}
-
Buenas Alber.
Tu solución es muy buena, quizás usas una forma más enrevesada de resolverlo para alguien que realiza un curso donde se aprende desde cero como su nombre indica.
Y me refiero a esta línea:
for(int i=0; i<entrada1.getLongitud()||i<entrada2.getLongitud();i++){
Para los que no entiendan bien esta línea, en realidad actúa como cualquier condición que introducimos en un if, el bucle se ejecutará tantas veces como número de caracteres contenga la entrada mas grande.
Saludos. ;D
-
aqui dejo otra solucion :P
codigo:
import java.util.Scanner;
public class ComparadorLetras {
public static void main (String[] args) {
int longitud;
int j = 1;
int menor;
Scanner capt = new Scanner(System.in);
System.out.println("Escriba dos cadenas: \nPrimera cadena:");
String texto1 = capt.nextLine();
System.out.println("Segunda cadena: ");
String texto2 = capt.nextLine();
System.out.println("");
if (texto1.length() > texto2.length()) { //establece la longitud de la cadena mayor para usarla como rango del for
longitud = texto1.length();
menor = 2;
}
else {longitud = texto2.length();
menor = 1;
}
for (int i=0; i <= longitud-1;i++) {
try {
System.out.println("Letra no. " + i + " igual en 2 palabras ----> " + texto1.substring(i,j).equals(texto2.substring(i,j)));
j = j + 1;
} catch (Exception e) {//establece si existe un error imprima el siguiente texto
System.out.println("La palabra " + menor + " no tiene letra " + (i+1));
}
}
}
}
-
Hola DanyFlow, tu código funciona correctamente, pero usas elementos como try catch que aún no han sido explicados dentro del programa del curso.
Saludos.