Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: pedro,, en 29 de Mayo 2015, 00:36
-
Hola, este es mi primer post, hasta ahora no me había surgido ninguna duda, pero este ejercicio mas que tener dudas fue que se me ocurrieron muchas formas de resolverlo, aquí pongo la mas corta de las que se me ocurrieron.
import java.util.Scanner;
public class Java62Ejercicio {
public static void main (String [] args) {
System.out.println ("Introduce una palabra 1:");
String palabra1 = "";
Scanner entradaEscaner1 = new Scanner (System.in);
palabra1 = entradaEscaner1.nextLine ();
System.out.println ("Introduce una palabra 2:");
String palabra2 = "";
Scanner entradaEscaner2 = new Scanner (System.in);
palabra2 = entradaEscaner2.nextLine ();
int i=0;
if (palabra1.length()>=palabra2.length()) {
while (i<palabra2.length()) {
if (palabra1.substring(i, i+1).equals(palabra2.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");
}
i++;
}
while (i<palabra1.length()) {
System.out.println("La palabra 2 no tiene letra " + (i+1) + ".");
i++;
}
} else if (palabra2.length()>=palabra1.length()) {
i=0;
while (i<palabra1.length()) {
if (palabra1.substring(i, i+1).equals(palabra2.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");
}
i++;
}
while (i<palabra2.length()) {
System.out.println("La palabra 1 no tiene letra " + (i+1) + ".");
i++;
}
}
}
también estuve intentando la posibilidad de hacerlo en dos clases, pero no fui capaz de sacar nada en claro.
-
yo lo resolví de otra forma como nos enseña en el tutorial porque es orientado a objeto no es extructurada te envio lo código aunque en mi código le falta cambiar los nombre nomas para que diga mejor lo que realiza
calse para recoger la letra
package ejercicioscu00662b;
public class VerificarLetra {
public void comprobarLetra(String palabra_1, String palabra_2) {
int limiteSup;
int limiteInf;
int text;
if (palabra_1.length() > palabra_2.length()) {
limiteInf = palabra_1.length();
text = 2;
limiteSup = palabra_2.length();
} else {
limiteInf = palabra_2.length();
text = 1;
limiteSup = palabra_1.length();
}
for (int i = 0; i < limiteSup; i++) {
if (i < limiteInf) {
System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? " + (palabra_1.substring(i, i + 1).equals(palabra_2.substring(i, i + 1))));
} else {
System.out.println("La palabra " + text + " no tiene letra " + (i + 1));
}
}
}
}
clase para crear el teclado y buscar palabra
package ejercicioscu00662b;
import java.util.Scanner;
public class Teclado {
private String entradaTeclado;
Scanner sc = new Scanner(System.in);
public Teclado() {
entradaTeclado = "";
}
public String buscarPalabra() {
entradaTeclado = sc.nextLine();
return entradaTeclado;
}
}
clase principal main
package ejercicioscu00662b;
public class EjerciciosCu00662B {
public static void main(String[] args) {
Teclado teclado = new Teclado();
VerificarLetra verificar = new VerificarLetra();
System.out.println("Introduce la primera palabra");
String palabra_1 = teclado.buscarPalabra();
System.out.println("Introduce la segunda palabra");
String palabra_2 = teclado.buscarPalabra();
verificar.comprobarLetra(palabra_1, palabra_2);
}
}
Para tener una idea y para modificar tu código
-
Esta sugerencia me dieron a mi código para modificar que todavía no hice
Y por último te haría una sugerencia: a la clase Teclado yo la renombraría por un nombre más significativo a lo que hace. La clase -tal como está planteado tu código- es un GestionadorDeEntradasTeclado. Creo que ese nombre es más apropiado para esa clase (o algo similar).
Lo mismo que a su método buscarPalabra() también lo renombraría por algo que sea más alusivo, por ejemplo podría bien llamarse recogerPalalabra(), que verdaderamente es lo que hace.
-
gracias por el aporte Ramón, ahora me pondré con el nuevo código.
sobre tu código, cuando lo ejecuto, no hace nada en la parte que debería de decir
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...
-
hacele esta modificacion en la clase para verificarLetra
package ejercicioscu00662b;
public class VerificarLetra {
public void comprobarLetra(String palabra_1, String palabra_2) {
int limiteSup;
int limiteInf;
int text;
if (palabra_1.length() < palabra_2.length()) {
limiteInf = palabra_1.length();
text = 1;
limiteSup = palabra_2.length();
} else {
limiteInf = palabra_2.length();
text = 2;
limiteSup = palabra_1.length();
}
for (int i = 0; i < limiteSup; i++) {
if (i < limiteInf) {
System.out.println("¿Letra " + (i + 1) + " igual en las dos palabras? " + (palabra_1.substring(i, i + 1).equals(palabra_2.substring(i, i + 1))));
} else {
System.out.println("La palabra " + text + " no tiene letra " + (i + 1));
}
}
}
-
Y el código funciona bien le puse mal nomas la condición y te pase lo que estaba mal cuando imprime dice asi
-
Tenes que crear 3 clase aunque podes hacer con 2
-
Bueno, siguiendo los consejos que me diste, finalmente hice lo siguiente:
acepto cualquier tipo de consejo y también me gustaría saber, ya que se le da mucha importancia a los nombres que utilizamos, es si los nombres de variables, método, etc. que utilizo son apropiados o si por el contrario pueden llevar al error.
el main
public class IgualdadEntrePalabras{
public static void main (String [] args) {
String palabra1 = "";
String palabra2 = "";
EntradaDeTeclado getPalabra = new EntradaDeTeclado();
ComparaPalabras palabras = new ComparaPalabras();
System.out.println ("Introduce una palabra 1:");
palabra1 = getPalabra.getPalabra();
System.out.println ("Introduce una palabra 2:");
palabra2 = getPalabra.getPalabra();
palabras.comprobrarIgualdad(palabra1, palabra2);
}
}
una clase con getter donde incluyo el Scanner.
import java.util.Scanner;
public class EntradaDeTeclado{
Scanner entradaEscaner = new Scanner(System.in);
private String entradaTeclado;
public EntradaDeTeclado(){
entradaTeclado ="";
}
public String getPalabra() {
entradaTeclado = entradaEscaner.nextLine();
return entradaTeclado;
}
}
y otra clase mas, donde realizo la comparacion de las palabras.
public class ComparaPalabras {
public void comprobrarIgualdad(String palabra1, String palabra2) {
int i = 0;
if (palabra1.length()>=palabra2.length()) {
while (i<palabra2.length()) {
if (palabra1.substring(i, i+1).equals(palabra2.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");
}
i++;
}
while (i<palabra1.length()) {
System.out.println("La palabra 2 no tiene letra " + (i+1) + ".");
i++;
}
} else if (palabra2.length()>=palabra1.length()) {
i=0;
while (i<palabra1.length()) {
if (palabra1.substring(i, i+1).equals(palabra2.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");
}
i++;
}
while (i<palabra2.length()) {
System.out.println("La palabra 1 no tiene letra " + (i+1) + ".");
i++;
}
}
}
}
-
No va a tener error si no le llama de forma correcta a los métodos constructores y otros
pero por la estandarizacion de java es la forma correcta de programar en java.
En Java existen ciertas reglas de codificación que son comúnmente utilizadas por los programadores.
Conviene conocer y seguir estas reglas.
• Los nombre de las clases deben empezar por mayúscula.
• Los atributos y méodos de las clases deben empezar por minúsculas y si están formadas por varias
palabras, se escriben sin espacios y la primera letra de cada palabra en mayúscula.
• Las instancias de las clases siguen la misma recomendación que los métodos y atributos.
• Las constantes se escriben en mayúsculas.
-
Funciona bien tu código hace lo que pide el ejercicios es un poco largo el algoritmo pero anda ademas ya esta mas programado orientado a objeto no como el otro que era estructurado
-
muchas gracias otra vez, lo tendré en cuenta.