se ejecuta antes el system.out.println que el if dentro del else
mejor así:
if (condicion1){
}else if(condicion2){
}else {
}
basicamente tengo que hacer un programa que;
al poner valor mayor que 0 me muestr por consola POSITIVO (me sale bien)
Menor que 0 sale por consola (NEGATIVO (me sale bien)
y al poner 0 en consola tiene que salir NULO, PERO ME SALE NEGATIVO Y NULO A LA VEZ... que tengo que cambiar? xd
![]()
supuestamente tengo que meter la condicion de valor nulo dentro del else mediante if, no hacer 2 elsesEl mensaje está oculto porque el usuario está en tu lista de ignorados.
o asi:
Scanner leer=new Scanner(System.in);
System.out.print("Ingresar valor");
int i=leer.nextInt();
if(i>0){
System.out.print("Positivo");
}
if(i==0){
System.out.print("Nulo");
}
if(i<0){
System.out.print("Negativo");
}
//Es bastante mierda, hay formas mas limpias.Pero bueno, creo que es esto lo que querias
El mensaje está oculto porque el usuario está en tu lista de ignorados.eso que es?El mensaje está oculto porque el usuario está en tu lista de ignorados.![]()
switch (expresión) {El mensaje está oculto porque el usuario está en tu lista de ignorados.
case valor1:
instrucciones;
break;
case valor2:
instrucciones;
break;
.
.
.
default:
sentencias;
break;
}
No te funciona porque el Else lo estás cerrando malEl mensaje está oculto porque el usuario está en tu lista de ignorados.
eso es bastante avanzado, aun no llegue ahiEl mensaje está oculto porque el usuario está en tu lista de ignorados.![]()
que dices?El mensaje está oculto porque el usuario está en tu lista de ignorados.yo he puesto el segundo if dentro de else porque asi me lo dijo el profesor pero seguramente deberia cerrar el else y hacer el otro if a parte no? ni idea
Mira el código que te he pasado, funciona. Y si no prueba con tu codigo a cerrar el else antes de abrir el segundo if a ver que pasaEl mensaje está oculto porque el usuario está en tu lista de ignorados.
hombre ese funcionará a huevos porque solo lleva if, la cosa es que tambien tengo que usar elseEl mensaje está oculto porque el usuario está en tu lista de ignorados.
Pues cierra el Else donde lo tienes que cerrar.El mensaje está oculto porque el usuario está en tu lista de ignorados.
Scanner leer=new Scanner(System.in);
System.out.print("Ingresar valor");
int i=leer.nextInt();
if(i>0){
System.out.print("Positivo");
}else{
System.out.print("Negativo");
}
if(i==0){
System.out.print("Nulo");
}
sisi cuando pueda lo prueboEl mensaje está oculto porque el usuario está en tu lista de ignorados.
llevo 2 semanas haciendo este tipo de ejerciciosEl mensaje está oculto porque el usuario está en tu lista de ignorados.yo estaba intentando meter un if dentro de un else pero supongo que no se puede y lo tengo que poner a parte
![]()
Según tu código, si es mayor que 0 te pondra positivo. Sino, es decir, si es 0 o menor, de ahí el "else" te pondrá siempre negativo. Y en el caso de que sea = 0 te ejecutara todo el rato la instrucción del MENOR y luego en el if anidado te pondrá nulo.
Que tienes que cambiar. Pues de momento quitar los "else" es un mal hábito emplearlos, sólo se usan cuando sea necesario y para lo que quieres hacer no lo es. Haz tres if.
if (i>0){
Syso("POSITIVO");
}
if(i==0){
Syso("NULO");
}
if(i<0){
Syso("NEGATIVO");
}
Repito, es un mal hábito emplear elses, entre otras cosas, porque cometes errores como el de ahora
Incluso podrías emplear un switch, pero yo no los uso demasiado y para 3 if de mierda, yo no me complicaría
Última edición por Centurion; 19/10/2017 a las 18:00
En ese caso no. Porque si metes el if dentro del else, le estas diciendo: Introduzco 0, como no es mayor que cero es negativo y como es igual que cero es nulo. Por lo tanto te muestra por pantalla negativo y nulo.El mensaje está oculto porque el usuario está en tu lista de ignorados.
Lee bien el código, si no es positivo, va a entrar por el Else, y en el else siempre ejecuta el Es MENOR.El mensaje está oculto porque el usuario está en tu lista de ignorados.
Y claro luego evaluará la condicion de si es nulo. Pero siempre te va a hacer el es menor.
Solución cambiar las cosas. De todos modos, este tipo de errores, es de no prestar atención. Mi consejo es que te hagas trazas y depures bien tu código. Eso es fundamental. Si te pierdes ahora con 5 líneas de código, cuando te pasen programas con varios millones de líneas, que hacen llamadas a otras clases que heredan de una interfaz, te vas a volver loco.
En esta profesión es importante ser metódico, ordenado y examinar con cabeza el código. Lee tranquilamente, te haces una traza, vas dando valores y ves como se comporta. Eso lo puedes hacer, (con estos programas de jueguete) con un simple papel y boli. "Simulas" el comportamiento, ves donde falla y lo corriges. Nadie hace un código perfecto la primera vez, de eso se trata, de depurarlo.
No es que no se pueda meter un "if" dentro de un "else". Eso es sintacticamente correcto, pero no tiene sentido para lo que quieres hacer. El else te distingue el resto de casos, es decir, si no es positivo, entra por el else, imaginatelo como una bifurcación con carreteras.
POSITIVO---------------------------------- Escribir MAYOR
.
.
.
.
NO ES POSITIVO--------Escribir MENOR
.
.
.
ES =0? ---------------- Escribir NULO
Eso es lo que hace tu codigo, por tanto siempre escribe "MENOR" y si es NULO escribira las dos.
Lo que tienes que hacer, es tener 3 bifurcaciones, POSITIVO, NULO, o NEGATIVO. 3 if es lo que necesitas
Por otro lado, aparte de lo del boli, puedes probar instrucciones tipo System.out.println para comprobar que ciertas instrucciones se ejecutan o no. Y cuando avances un poco más, te convendría hacerte pruebas unitarias, y aprender a manejar el depurador de tu IDE
Última edición por Centurion; 19/10/2017 a las 18:03
joder estoy empezando, llevo 2 semanas haciendo cosas asi, bucles etc y 2 semanas dando teoria, tiempo al tiempoEl mensaje está oculto porque el usuario está en tu lista de ignorados.supongo que tu al principio no fallabas en nada
No se trata de que no sepas, esto no es un error de no saber, es un error de no prestar atención ni molestarte en probar tu código. A mi también me pasaba, y yo te lo digo para que lo corrijas, a mi me da igual, yo te digo la solución, yo ya me lo sé. Te explico lo que tienes que cambiar. Porque esto te lo resuelven en 5 minutos. Pero si arrastras ese deficit de no comprobar las cosas, cuando tengas delante un programa tocho con 5000 llamadas a diferentes clases e historias, te vas a volver loco. Tu mismoEl mensaje está oculto porque el usuario está en tu lista de ignorados.
gracias por la motivacionEl mensaje está oculto porque el usuario está en tu lista de ignorados.![]()
Motivación no, es lo que te espera, no te voy a engañar. Y cuenta con que Java es un lenguaje muy muy agradable, C para mi es dolor de huevos, mas potente si, pero un dolor de huevos. Y ni te cuento si tiras por Haskell.El mensaje está oculto porque el usuario está en tu lista de ignorados.
Mas que aprender a programar, hay que aprender a pensar y a ser metódico y ordenado. Como no seas metódico y ordenado, en este mundo las vas a pasar muy putas. Así que no hagas como yo, y cuanto antes ponle remedio, o dedicate a otra cosa