Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: javalopez en 11 de Junio 2015, 23:45
-
Buenas tardes, aqui les pego mi código del ejercicio!
import java.util.Scanner;
public class ComparaLetrasCadenas{
public static void main (String[] Args){
System.out.println ("Por favor introduzca la primera cadena por teclado:");
Scanner entradaEscaner1 = new Scanner (System.in);
String entradaTeclado1 = entradaEscaner1.nextLine ();
System.out.println ("Por favor introduzca la segunda cadena por teclado:");
Scanner entradaEscaner2 = new Scanner (System.in);
String entradaTeclado2 = entradaEscaner2.nextLine ();
int limiteMayor=0;
int limiteMenor=0;
if(entradaTeclado1.length()>=entradaTeclado2.length()){ //establecemos los limites del bucle y los fin de cadena
limiteMayor=entradaTeclado1.length();
limiteMenor=entradaTeclado2.length();}
else{
limiteMayor=entradaTeclado2.length();
limiteMenor=entradaTeclado1.length();}
for(int i=1;i<=limiteMayor;i++)//hacemos un bucle
{
System.out.println("¿Letra " +i+ " igual en las dos palabras?");
if(i<=limiteMenor){
System.out.println(entradaTeclado1.substring(i-1,i).equals(entradaTeclado2.substring(i-1,i)));}
else if(entradaTeclado1.length()<entradaTeclado2.length()){
System.out.println("La palabra 1 no tiene letra " +i);}
else if(entradaTeclado1.length()>entradaTeclado2.length()){
System.out.println("La palabra 2 no tiene letra " +i);}
}
}
}
Saludos! Ariel
-
Hola estaba probando tu código y encontré errores imprimía hasta el final esta linea
System.out.println("¿Letra " +i+ " igual en las dos palabras?");
como no tiene condición imprime hasta que termine el bucle y la condición que le pasa al if esta mal no hace lo que pide imprime mal.
-
Hice alguna modificación en tu código para guiarte un poco espero que te ayude.
import java.util.Scanner;
public class ComparaLetrasCadenas {
public static void main(String[] args) {
System.out.println("Por favor introduzca la primera cadena por teclado:");
Scanner entradaEscaner1 = new Scanner(System.in);
String entradaTeclado1 = entradaEscaner1.nextLine();
System.out.println("Por favor introduzca la segunda cadena por teclado:");
Scanner entradaEscaner2 = new Scanner(System.in);
String entradaTeclado2 = entradaEscaner2.nextLine();
int limiteMayor;
int limiteMenor;
int palabra;
if (entradaTeclado1.length() > entradaTeclado2.length()) { //establecemos los limites del bucle y los fin de cadena
limiteMayor = entradaTeclado1.length();
limiteMenor = entradaTeclado2.length();
palabra = 2;
} else {
limiteMayor = entradaTeclado2.length();
limiteMenor = entradaTeclado1.length();
palabra = 1;
}
for (int i = 0; i < limiteMayor; i++)//hacemos un bucle
{
// System.out.println("¿Letra " + i + " igual en las dos palabras?");
if (i < limiteMenor) {
// System.out.println(entradaTeclado1.substring(i - 1, i).equals(entradaTeclado2.substring(i - 1, i)));
System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? " + (entradaTeclado1.substring(i, i + 1).equals(entradaTeclado2.substring(i, i + 1))));
} else {
//System.out.println("La palabra 1 no tiene letra " + i);
System.out.println("La palabra " + palabra + " no tiene letra " + (i + 1));
} /*else if (entradaTeclado1.length() > entradaTeclado2.length()) {
System.out.println("La palabra 2 no tiene letra " + i);
}*/
}
}
}
no borre deje en comentario nomas para mirar y hacer comparación
-
Hola Dranx, ese código lo corrí en mi BlueJ y funciona bien, aquí te mando la muestra que me arroja por consola.
Por favor introduzca la primera cadena por teclado:
Ariel
Por favor introduzca la segunda cadena por teclado:
Ave
¿Letra 1 igual en las dos palabras?
true
¿Letra 2 igual en las dos palabras?
false
¿Letra 3 igual en las dos palabras?
false
¿Letra 4 igual en las dos palabras?
La palabra 2 no tiene letra 4
¿Letra 5 igual en las dos palabras?
La palabra 2 no tiene letra 5
Dime que palabras utilizaste para hacer la misma prueba que vos para ver si a mi me da el mismo error.
Gracias por la modificación!
Ariel
-
mirando lo que te imprimió te voy a mostrar el error.
Por favor introduzca la primera cadena por teclado:
Ariel
Por favor introduzca la segunda cadena por teclado:
Ave
¿Letra 1 igual en las dos palabras?
true
¿Letra 2 igual en las dos palabras?
false
¿Letra 3 igual en las dos palabras?
false
¿Letra 4 igual en las dos palabras?Este ya no tiene que imprimir mas
La palabra 2 no tiene letra 4
¿Letra 5 igual en las dos palabras?Este ya no tiene que imprimir mas
La palabra 2 no tiene letra 5
tiene que quedar asi mas o menos
Por favor introduzca la primera cadena por teclado:
Ariel
Por favor introduzca la segunda cadena por teclado:
Ave
¿Letra 1 igual en las dos palabras?
true
¿Letra 2 igual en las dos palabras?
false
¿Letra 3 igual en las dos palabras?
false
La palabra 2 no tiene letra 4
La palabra 2 no tiene letra 5
Y La solución probando ahora pille solo tenes que poner
System.out.println("¿Letra " + i + " igual en las dos palabras?");
dentro de tu condición if vos estaba imprimiendo dentro de tu for y entonce imprime hasta que termine el for. El código quedaría así sin mucha modificación solo donde esta la condición.
for (int i = 1; i <= limiteMayor; i++)//hacemos un bucle
{
if (i <= limiteMenor) {
System.out.println("¿Letra " + i + " igual en las dos palabras?");
System.out.println(entradaTeclado1.substring(i - 1, i).equals(entradaTeclado2.substring(i - 1, i)));
} else if (entradaTeclado1.length() < entradaTeclado2.length()) {
System.out.println("La palabra 1 no tiene letra " + i);
} else if (entradaTeclado1.length() > entradaTeclado2.length()) {
System.out.println("La palabra 2 no tiene letra " + i);
}
}
-
El código completo agarrando tu código.
public class ComparaLetrasCadenas2 {
public static void main(String[] Args) {
System.out.println("Por favor introduzca la primera cadena por teclado:");
Scanner entradaEscaner1 = new Scanner(System.in);
String entradaTeclado1 = entradaEscaner1.nextLine();
System.out.println("Por favor introduzca la segunda cadena por teclado:");
Scanner entradaEscaner2 = new Scanner(System.in);
String entradaTeclado2 = entradaEscaner2.nextLine();
int limiteMayor = 0;
int limiteMenor = 0;
if (entradaTeclado1.length() >= entradaTeclado2.length()) { //establecemos los limites del bucle y los fin de cadena
limiteMayor = entradaTeclado1.length();
limiteMenor = entradaTeclado2.length();
} else {
limiteMayor = entradaTeclado2.length();
limiteMenor = entradaTeclado1.length();
}
for (int i = 1; i <= limiteMayor; i++)//hacemos un bucle
{
if (i <= limiteMenor) {
System.out.println("¿Letra " + i + " igual en las dos palabras?");
System.out.println(entradaTeclado1.substring(i - 1, i).equals(entradaTeclado2.substring(i - 1, i)));
} else if (entradaTeclado1.length() < entradaTeclado2.length()) {
System.out.println("La palabra 1 no tiene letra " + i);
} else if (entradaTeclado1.length() > entradaTeclado2.length()) {
System.out.println("La palabra 2 no tiene letra " + i);
}
}
}
}