Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: juan0754 en 06 de Mayo 2018, 05:50

Título: Ayuda en mi codigo de JAVA (Condicionales y Bucles)
Publicado por: juan0754 en 06 de Mayo 2018, 05:50
Hola amigos tengo un problema con el siguiente código.Creo que el error se da en el if no hace la comparación.(Si es así quisiera saber por que)
Entorno: Eclipse
Lenguaje P.: Java
Problema: Ingresa tu mes de nacimiento,y se te da como repuesta tu signo zodiacal al cual probablemente perteneces .
Código: [Seleccionar]
import java.util.*;
public class ejercicio1 {

public static void main(String[] args) {
Scanner S=new Scanner(System.in);
String a;
String []b ={"enero","Enero","febrero","Febrero"};
boolean num=true;
System.out.println("Ingresa el mes en que naciste:");
    a=S.nextLine();
   
    do{
for(int i=0;i<b.length;i++){
      if(a==b[i]){
      num=false;
    }
}
}while(num);   
   
switch(a){
case "Enero": System.out.println("Eres preobablemente de signo Capricornio o Acuario");
break;
case "enero": System.out.println("Eres preobablemente de signo Capricornio o Acuario");
break;
case "Febrero": System.out.println("Eres preobablemente de signo Capricornio o Acuario");
break;
case "febrero": System.out.println("Eres preobablemente de signo Capricornio o Acuario");
}
Título: Re:Ayuda en mi codigo de JAVA (Condicionales y Bucles)
Publicado por: Kabuto en 06 de Mayo 2018, 21:52
¿Qué esperas conseguir con el código que hay en el
bucle do..while()?
No hace nada útil, ni en realidad necesitas que lo haga. Este bucle puedes ahorrartelo.
Y por consiguiente no necesitas tampoco el array de Strings, ni la variable booleana.

Solo necesitas usar el switch para comparar la cadena introducida por el usuario.

Otra cosa. Esta bien intentar que el programa acepte "Enero" y "enero", "Febrero" y "febrero"..... pero no es práctico poner las distintas formas posibles, porque además esas no son las únicas posibles..
¿que pasa si pone "ENERO"?
¿O si es un usuario tocanarices y le da por poner "eNero", "EnErO", etc...?

Es una locura intentar contemplar todas las posibles combinaciones, lo mejor es usar los métodos que nos ofrece la clase String de Java para transformar a minúscula todas las letras de la cadena que ha introducido el usuario, y luego comparar.

Si añades esto al código:
Citar
System.out.println("Ingresa el mes en que naciste:");
a=S.nextLine().toLowerCase();

Conseguirás que lo que teclee el usuario sea recogido en minúsculas, independientemente de como lo haya tecleado el usuario.

Así, en tu switch, solo necesitarás usar las palabras minúsculas para comparar
Citar
switch(a)
{
case "enero":
case "febrero":
case "marzo":
.....
.....
}

Si por algún motivo lo quisieras en mayúsculas, tienes este otro método:
Citar
System.out.println("Ingresa el mes en que naciste:");
a=S.nextLine().toUpperCase();

Y el swich debería ser este:
Citar
switch(a)
{
case "ENERO":
case "FEBRERO":
case "MARZO":
.....
.....
}
Título: Re:Ayuda en mi codigo de JAVA (Condicionales y Bucles)
Publicado por: juan0754 en 10 de Mayo 2018, 03:35
Gracias amigo por pasarte a responder.. :) :)