Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: isralgs en 13 de Mayo 2014, 00:20

Título: ayuda con practica 62 --CU00662B comparar letras java
Publicado por: isralgs en 13 de Mayo 2014, 00:20
Hola , si alguien ha hecho esta practica agradeceria que me pusiera el codigo , ya que  no consigo hacer que me diga "la cadena 2 esta vacia ".
De hecho , agradeceria cualquier ayuda
Título: Re:ayuda con practica 62 --CU00662B
Publicado por: javi in the sky en 13 de Mayo 2014, 14:52
Pon el código con lo que hayas podido hacer para tratar de corregirlo partiendo de lo que hayas hecho, saludos
Título: Re:ayuda con practica 62 --CU00662B
Publicado por: isralgs en 14 de Mayo 2014, 22:09
esta seria la clase main


Código: [Seleccionar]
public class TestEntradaDeTeclado {
   
    int i=0;

    public static void main (String [ ] args)
    {

        System.out.println ("Empezamos el programa");     
        System.out.println ("Por favor introduzca la entrada 1:");
        EntradaDeTeclado entrada1 = new EntradaDeTeclado();
        System.out.println ("Por favor introduzca la entrada 2:");
        EntradaDeTeclado entrada2 = new EntradaDeTeclado();
        System.out.println ("Gracias");
        int largo;
        largo=Math.max(entrada1.getLongitud(),entrada2.getLongitud());
        for (int i=0 ; i < largo ; i++)
        {
           // System.out.println ("Letra "+i+" de las dos primeras entradas iguales?"+entrada1.getPrimeraPalabra(i).equals(entrada2.getPrimeraPalabra(i)));
         System.out.println ("Letra "+i+" de las dos primeras entradas iguales?");
         
         if (entrada1.getPrimeraPalabra(i).equals(""))
                    System.out.println("La palabra 1 no tiene letra"+i);
                    else if (entrada2.getPrimeraPalabra(i).equals(""))
                    System.out.println("La palabra 2 no tiene letra"+i);
                        System.out.println (entrada1.getPrimeraPalabra(i).equals(entrada2.getPrimeraPalabra(i)));
               
               
       }
   
    } //Cierre del main
 
} //Cierre de la clase

y aqui llamaria al metodo
Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java

// Definimos una clase EntradaDeTeclado aprenderaprogramar.com

public class EntradaDeTeclado {

    private String entradaTeclado; //Variable de instancia (campo) de la clase

   int i=0;
    public EntradaDeTeclado ()
    { //Constructor

        entradaTeclado="";

        pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método

    } //Cierre del constructor

 

    public void pedirEntrada ()
    {  //Método de la clase         

        Scanner entradaEscaner = new Scanner (System.in);

        entradaTeclado = entradaEscaner.nextLine ();
    } //Cierre del método pedirEntrada

   
    public String getEntrada ()
    {
        return entradaTeclado;
    } //Cierre del método getEntrada

    public String getPrimeraPalabra (int i)  {
       
      // if (entradaTeclado.substring(i,i+1).equals(""))
                                                            //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
         //    {
                 return entradaTeclado.substring(i,i+1);
         //       }
           
        //    return entradaTeclado;
     

    } //Cierre del método getPrimeraPalabra



  public int getLongitud ()  {  //Método de la clase

      return entradaTeclado.length();

   } //Cierre del método getLongitud

} //Cierre de la clase
Título: Re:ayuda con practica 62 --CU00662B
Publicado por: javi in the sky en 15 de Mayo 2014, 13:13
Lo que he visto es que tienes mal considerado lo que se va a comparar, es decir el enunciado del problema dice que se comparen las letras de las palabras, en cambio tú estás usando entrada1.getPrimeraPalabra(i).equals ... pero getPrimeraPalabra lo que te devuelve es una palabra cuando tú lo que necesitas es comparar letras, por tanto no te va a servir getPrimeraPalabra, tendrás que usar algo que te permite comparar letras.

Lo que te permite extraer letras es substring explicado en https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=586:estudiando-el-concepto-de-metodo-java-el-metodo-substring-de-la-clase-string-extraer-caracteres-cu00649b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

He organizado el código, falta completarlo y mejorarlo

Código: [Seleccionar]
public class TestEntradaDeTeclado {
    public static void main (String [ ] args) {
        System.out.println ("Empezamos el programa");     
        System.out.print ("Por favor introduzca la entrada 1: ");
        EntradaDeTeclado entrada1 = new EntradaDeTeclado();
        System.out.print ("Por favor introduzca la entrada 2: ");
        EntradaDeTeclado entrada2 = new EntradaDeTeclado();
        System.out.println ("Gracias");
        for (int i=0 ; i < entrada1.getLongitud(); i++) {

            if (i<entrada2.getLongitud()) { //Hay letra en las dos palabras
                System.out.println("Letra " + (i+1) +" de palabra 1 es: " +entrada1.getEntrada().substring(i, i+1)+
                " y letra " + (i+1) +" de palabra 2 es: " +entrada2.getEntrada().substring(i, i+1));
            }
            else {
                System.out.println ("La letra " + (i+1) + " de la palabra 1 es: " + entrada1.getEntrada().substring(i, i+1) + " y la segunda palabra no tiene " +
                    "letra en esta posición");
            }
        }
    } //Cierre del main
} //Cierre de la clase

 :)