Autor Tema: CU00657B Condiciones de longitud de cadena y primera letra ejemplo Scanner Java  (Leído 5932 veces)

jaivcaba

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Hola

aquí el código
-Cualquier sugerencia sera cordialmente recibida-

De antemano, muchas gracias por comentar.



Código: [Seleccionar]
public class TestPrograma2
{
   
    public static void main (String [] args){
       
        System.out.println("introduzca texto");
        String texto = "";
        Scanner leerTexto = new Scanner (System.in);
        texto = leerTexto.nextLine();
        String condicionDice = "";
        char primeraLetra = texto.charAt(0);
       
        if (texto.length()< 5 && primeraLetra == 'a'){
            condicionDice= "tiene menos de 5 caracteres y comienza por a";
        }else{
         if (texto.length()<5 && primeraLetra != 'a'){
             condicionDice= "tiene menos de 5 caracteres pero no comienza en a";
            }else{
          if (texto.length()>=5 && texto.length() <=15 && primeraLetra =='a'){
               condicionDice= "tiene entre 5 y 15 caracteres y comienza por a";
            }else{
           if(texto.length()>=5 && texto.length() <=15 && primeraLetra !='a'){
                condicionDice= "tiene entre 5 y 15 caracteres y no comienza por a";
            }else{                       
            if (texto.length()>=15 && primeraLetra =='a'){
                  condicionDice= "tiene mas de 15 caracteres y comienza por a"; 
                }else{
             if (texto.length()>=15 && primeraLetra != 'a'){
                    condicionDice= "tiene mas de 15 caracteres y no comienza por a";
                }
            }
           }
          }
         }
        }
       System.out.println(condicionDice);
        }
}


« Última modificación: 25 de Noviembre 2014, 08:46 por Alex Rodríguez »

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:CU00657B Condiciones de longitud de cadena y primera letra
« Respuesta #1 en: 24 de Noviembre 2014, 20:13 »
Hola jaivcaba,
Tu ejercicio aun siendo funcional, te comento algunos detalles.

En primer lugar he tenido que importar la clase Scanner al principio de la clase, pues no venía.
Que quiere decir esto, que envías una clase que no has probado (sin la importación de Scanner esta clase no funciona)
Que has eliminado la sentencia de la importación de Scanner sin darte cuenta ¿?

Si bien el uso del método charAt es válido y lícito, en esta entrega se pide el uso del método substring
Está bien que uses el método que te parezca idóneo para hacer el trabajo. Pero en ese caso,  te sugiero que presentes el ejercicio tal como se pide (así demuestras que sabes hacerlo) y si quieres presentas tu versión modificada para que veamos otra forma de hacer el trabajo.

Tu ejercicio es un ejemplo perfecto del uso de if anidados (un if dentro de otro if).
El uso del if anidado tiene su utilidad cuando al cumplirse una condición, debemos tomar otra desición con otro if.
En este caso hay 6 sencencias if y 5 sentencias else.
Mira una versión usando if y else if

Código: [Seleccionar]
if (texto.length()< 5) {
    condicionDice = "tiene menos de 5 caracteres";
}   else if (texto.length()>=5 && texto.length() <=15) {
    condicionDice = "tiene entre 5 y 15 caracteres";
}   else {
    condicionDice= "tiene mas de 15 caracteres";
}

if (primeraLetra == 'a') {
    condicionDice += " y comienza por a";
}   else {
    condicionDice += " y no comienza por a";
}

En esta versión se usan 2 if, 1 else if y 2 else. Este código es más compacto, además es más facil de entender que el del if anidado.

Saludos

jaivcaba

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil

Gracias por tomarte la molestia de revisar. 

aquí nuevamente el código.

Código: [Seleccionar]
/**
 * Write a description of class TestPrograma2 here.
 *
 * @author (jaivcaba)
 * @version (25/11/2014)
 */
import java.util.Scanner;


public class TestPrograma3
{
   
    public static void main (String [] args){
       
        System.out.println("introduzca texto");
        String texto = "";
        Scanner leerTexto = new Scanner (System.in);
        texto = leerTexto.nextLine();
        String condicionDice = "";
       
       
       
        if (texto.length()< 5){
            condicionDice= "tiene menos de 5 caracteres";
        }else if (texto.length()>=5 && texto.length()<=15){
             condicionDice= "tiene entre 5 y 15 caracteres";
        }else if (texto.length()>=15){
               condicionDice= "tiene mas de 15 caracteres";}
               
        if (texto.substring(0,1).charAt(0) == 'a'){
            condicionDice+= " y comienza por a";
        }else{ condicionDice+= " y no comienza en a";
        }
                     
        System.out.println(condicionDice);
        }
}


la clase Scanner si estaba en el codigo original, solo que no seleccione el código completo al publicarlo, XD perdon por eso.

Cualquier comentario adicional sera bien recibido. 

LPM

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 35
    • Ver Perfil
Hola jaivcaba

Código: [Seleccionar]
if (texto.substring(0,1).charAt(0) == 'a'){
Está bueno combinar 2 métodos en uno solo por así decir

Pero creo que substring(0,1) es casi lo mismo que hace chartAt(0), ambos toman el primer caracter de la cadena.

con substring(0,1) tomás el caracter inicial. como que de "hola" te queda "h". con eso ya podés iniciar bien el bucle

Código: [Seleccionar]
if(texto.substring(0,)=="a"{
pero tenés que usar doble comilla porque substring te devuelve un String

jaivcaba

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
Re:CU00657B Problema con la codicion letra "a" . AYUDA
« Respuesta #4 en: 27 de Noviembre 2014, 05:01 »
Hola ... tienes razón en lo que mencionas, de hecho yo también había pensado lo mismo, solo usar substring(0,1) == "a". Pero no funciona para las palabras que comienzan en "a" he intentado con diferentes maneras como substirng(0) == "a" y substring(1) == "a" entro otros y tampoco.


¿Podrían decirme en que estoy fallando?......... mil gracias de antemano.



Sin embargo .Aquí el código.

Código: [Seleccionar]
/**
 * Write a description of class TestPrograma2 here.
 *
 * @author (jaivcaba)
 * @version (25/11/2014)
 */
import java.util.Scanner;


public class TestPrograma3
{
   
    public static void main (String [] args){
       
        System.out.println("introduzca texto");
        String texto = "";
        Scanner leerTexto = new Scanner (System.in);
        texto = leerTexto.nextLine();
        String condicionDice = "";
       
       
       
        if (texto.length()< 5){
            condicionDice= "tiene menos de 5 caracteres";
        }else if (texto.length()>=5 && texto.length()<=15){
             condicionDice= "tiene entre 5 y 15 caracteres";
        }else if (texto.length()>=15){
               condicionDice= "tiene mas de 15 caracteres";}
               
        if (texto.substring(0,1) == "a"){
            condicionDice+= " y comienza por a";
        }else{ condicionDice+= " y no comienza en a";
        }
                     
        System.out.println(condicionDice);
        }
}


He visto que utilizan

if(texto.substring(0,1).equals("a"))

Se que funciona de esta manera, pero seria lo mismo que hice anteriormente de combinar dos métodos en uno solo, yo use.

if (texto.substring(0,1).charAt(0) == 'a')

y funciono.

¿Me pregunto si es necesario usar dos métodos para resolver el ejercicio y si es así, porque no funciona como esta en el presente código?


Gracias LPM y toni_apr por ayudarme. Cualquier comentario sera bien recibido

Saludos. 


LPM

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 35
    • Ver Perfil
Pasa que el método substring te devuelve un valor tipo String, y String es un objeto

Por lo que tengo entendido, para comparar la igualdad entre objetos se usa .equals()

Código: [Seleccionar]
if (texto.substring(0,1).equals("a"))
al usar charAt te devuelve un valor tipo char, que es un tipo de dato primitivo, y para comparar la igualdad de un dato primitivo se usa ==
por eso es que al usar el método charAt y el operador == te resulta



Código: [Seleccionar]
if (texto.charAt(0)=='a')
la a está entre comillas simples, 'a'
con eso como que indicás que es un char.  comparás el char que devuelve charAt con el char 'a' usando ==

fijate también que si pones con doble comilla la a, te salta error, en que no se puede comparar entre tipo String y char. la "a" es String, 'a' es char


En una entrega del curso explica bien el == y el equals

http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=628:el-metodo-equals-en-java-diferencia-entre-igualdad-e-identidad-comparar-objetos-ejemplos-cu00662b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188
« Última modificación: 27 de Noviembre 2014, 06:28 por LPM »

jaivcaba

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 42
    • Ver Perfil
muchas gracias!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".