Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Luis Fdo Carvajal en 29 de Marzo 2017, 22:33
-
Respuesta a Pensar en objetos. Una entrada de teclado o consola en Java como objeto con campos y métodos. (CU00661B)
Crea una clase en cuyo método main ejecutes una comparación letra a letra usando equals de dos palabras usando bucles. Por ejemplo si las palabras son “avispa” y “ave” el programa debe dar como resultado: ¿Letra 1 igual en las dos palabras? True. ¿Letra 2 igual en las dos palabras? True ¿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 ¿Letra 6 igual en las dos palabras? La palabra 2 no tiene letra 6.
import java.util.Scanner;
/**
*
* @author ITCO1724
*/
public class TestEntradaDeTeclado {
public static void main (String [ ] args) {
System.out.println ("Empezamos el programa");
System.out.println ("Por favor introduzca la entrada 1:");
String cadena1="";
Scanner x = new Scanner (System.in); //Creación de un objeto Scanner
cadena1 = x.nextLine (); //Invocamos un método sobre un objeto Scanner
System.out.println ("Por favor introduzca la entrada 2:");
String cadena2="";
Scanner y = new Scanner (System.in); //Creación de un objeto Scanner
cadena2 = y.nextLine (); //Invocamos un método sobre un objeto Scanner
int i = 0;
try {
for (i=0;i<= cadena1.length(); i++ ) {
if (cadena1.substring(i,i+1).equalsIgnoreCase(cadena2.substring(i,i+1))){
System.out.println ("¿Letra " + (i+1) + " igual en las dos palabras? True");
}
else {
System.out.println ("¿Letra " + (i+1) + " igual en las dos palabras? False"); }
}
}
catch (Exception e) {
}
} //Cierre del main
} //Cierre de la clase
-
Bueno, revisando encontré que me faltó parte de lo exigido en el ejercicio. Acá lo agrego.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import java.util.Scanner;
/**
*
* @author ITCO1724
*/
public class TestEntradaDeTeclado {
public static void main (String [ ] args) {
System.out.println ("Empezamos el programa");
System.out.println ("Por favor introduzca la entrada 1:");
String cadena1="";
Scanner x = new Scanner (System.in); //Creación de un objeto Scanner
cadena1 = x.nextLine (); //Invocamos un método sobre un objeto Scanner
System.out.println ("Por favor introduzca la entrada 2:");
String cadena2="";
Scanner y = new Scanner (System.in); //Creación de un objeto Scanner
cadena2 = y.nextLine (); //Invocamos un método sobre un objeto Scanner
// determinar cuál string tiene mayor longitud de caracteres
String cadena="";
if ( cadena1.length()>cadena2.length()){
cadena = cadena1;
}
else {
cadena = cadena2;
}
int i = 0;
int j = 0;
try {
for (i=0;i<= cadena.length(); i++ ) {
//while (i<cadena.length()) {
if (cadena1.substring(i,i+1).equalsIgnoreCase(cadena2.substring(i,i+1))){
System.out.println ("¿Letra " + (i+1) + " igual en las dos palabras? True");
}
else {
System.out.println ("¿Letra " + (i+1) + " igual en las dos palabras? False");}
}
}
catch (Exception e) {
}
for (j=0;(i+j)<= cadena.length(); j++ ){
System.out.println ("¿Letra " + (i+j) + " igual en las dos palabras? La segunda entrada no tiene letra " + (i+j));
}
}//Cierre del main
} //Cierre de la clase
-
Hola Luis Fdo.
En el curso no se han explicado los bloques try catch, y este ejercicio se puede resolver con lo aprendido en el curso sin necesidad de usarlos, así que si quieres, lo ideal es que presentases una solución de acuerdo a lo estudiado en el curso.De la forma en que resuelves el ejercicio es intentando deshacerte de un error usando try catch, un error que puedes solucionar fácilmente resolviendo el ejercicio adecuadamente, try catch se debe usar cuando puedan ocurrir errores que no pudiésemos controlar de otra forma. Te dejo un enlace con una posible solución al ejercicio:
https://www.aprenderaprogramar.com/foros/index.php?topic=2089.msg10280#msg10280
Saludos. ;D
-
Hola
Tengo una duda respecto a este bloque de código:
public String getPrimeraPalabra () {
//IMPORTANTE: EN JAVA LOS OBJETOS NO SE PUEDEN COMPARAR USANDO == POR ESO ESTO NO FUNCIONARÁ
if (entradaTeclado.substring(0,1)=="j") {
System.out.println ("Hemos detectado una j");
} else { System.out.println ("Mira esto:" + entradaTeclado.substring(0,1) ); }
/*for (int i=0; i < entradaTeclado.length() - 1; i++) {
if (entradaTeclado.substring (i, i+1).equals(" ") ) { //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
return entradaTeclado.substring(0, i+1); }
}*/
return entradaTeclado; //Caso de que no se detecte ningún espacio devolvemos lo que haya
} //Cierre del método getPrimeraPalabra
Compila y corre sin problemas, pero jamás entra al bloque del if sin importar que la cadena solo contenga "j". Podrías aclararme por qué sucede eso? (Haciendo enfasis en que en el comentario del código dices que no funcionaría). Gracias.
-
Buenas.
El problema es que no se pueden comparar dos String usando "==", para ello puedes usar el método equals() o equalsIgnoreCase().
public String getPrimeraPalabra () {
//IMPORTANTE: EN JAVA LOS OBJETOS NO SE PUEDEN COMPARAR USANDO == POR ESO ESTO NO FUNCIONARÁ
if (entradaTeclado.substring(0,1).equals("j")) {
System.out.println ("Hemos detectado una j");
} else { System.out.println ("Mira esto:" + entradaTeclado.substring(0,1) ); }
/*for (int i=0; i < entradaTeclado.length() - 1; i++) {
if (entradaTeclado.substring (i, i+1).equals(" ") ) { //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
return entradaTeclado.substring(0, i+1); }
}*/
return entradaTeclado; //Caso de que no se detecte ningún espacio devolvemos lo que haya
} //Cierre del método getPrimeraPalabra
Saludos. ;D
-
Bien, ya aclaraste mi duda.
Muchas gracias 8)