Foro sobre Java SE > while & if
import java.util.Scanner;
public class ejemploo{
public static void main(String[]args){
int edadCarlos = 47;
int edadmoises = 45;
while(edadCarlos !=0 & edadmoises !=0) {
Scanner lector = new Scanner(System.in);
System.out.println(\"Cual es la edad de Carlos¿?\\n 0 para salir\");
String temp = lector.nextLine();
edadCarlos = Integer.parseInt(temp);
System.out.println(\"Y la de Moisés¿?\\n 0 para salir\");
temp = lector.nextLine();
edadmoises = Integer.parseInt(temp);
// esto debiera haberlo hecho con una case
if(edadCarlos >=18 && edadmoises >=18) // operador Y
System.out.println(\" Carlos y Moisés son mayores de edad\");
else if(edadCarlos==edadmoises)
System.out.println(\" Carlos y Moisés tienen la misma edad\");
else if(edadCarlos<=18 && edadmoises<=18)
System.out.println(\" Carlos y Moisés son menores de edad\");
else if(edadCarlos< edadmoises)
System.out.println(\"Carlos en más joven que Moisés\");
else if(edadCarlos> edadmoises)
System.out.println(\"Carlos en mayor que Moisés\");
else if(edadCarlos==0 && edadmoises==0)
System.out.println(\"Has decido salir del bucle de edades \");
else{
System.out.println(\" Carlos y Moisés, la combinación no es encontrada\");
}
}
}
}
//La verdad no se porque como tu lo haces da problemas
int edadCarlos = 47;
int edadmoises = 45;
while(edadCarlos !=0 & edadmoises !=0){
System.out.println("Cual es la edad de Carlos¿?\n 0 para salir");
Scanner lector = new Scanner(System.in);
edadCarlos = lector.nextInt();
System.out.println("Y la de Moisés¿?\n 0 para salir");
Scanner lector1 = new Scanner(System.in); //
edadmoises = lector1.nextInt();
// esto debiera haberlo hecho con una case
if(edadCarlos >=18 && edadmoises >=18) // operador Y
System.out.println(" Carlos y Moisés son mayores de edad");
else if(edadCarlos==edadmoises & edadCarlos!=0 & edadmoises!=0)
System.out.println(" Carlos y Moisés tienen la misma edad");
else if(edadCarlos<=18 && edadmoises<=18 & edadCarlos!=0 & edadmoises!=0)
System.out.println(" Carlos y Moisés son menores de edad");
else if(edadCarlos< edadmoises)
System.out.println("Carlos en más joven que Moisés");
else if(edadCarlos> edadmoises )
System.out.println("Carlos en mayor que Moisés");
else if(edadCarlos==0 && edadmoises==0){
System.out.println("Has decido salir del bucle de edades ");
break;
}
else
System.out.println(" Carlos y Moisés, la combinación no es encontrada");
}
Lo que he hecho es añadir un break; en el el ultimo elseif que compara con 0 asi sale del bucle y luego he añadido dos condiciones a los if que comparan con menores de edad y al que compara que sean iguales, asi cuando escribes 0 0 no saca por pantalla las frases: "Carlos y Moisés tienen la misma edad" y "Carlos y Moisés son menores de edad", espero que te sirva aunque seguramente llegue tarde, pero bueno.
El caso es que con un while lo suyo es utilizar un case, pero teóricamente este ejercicio debiera estar preguntando hasta que las dos edades sean == a 0. entra en el bucle, no pregunta ni para.
int edadCarlos = 47;
int edadmoises = 45;
while(edadCarlos !=0 & edadmoises !=0)
System.out.println("Cual es la edad de Carlos¿?\n 0 para salir");
Scanner lector = new Scanner(System.in);
edadCarlos = lector.nextInt();
System.out.println("Y la de Moisés¿?\n 0 para salir");
Scanner lector1 = new Scanner(System.in); //
edadmoises = lector1.nextInt();
// esto debiera haberlo hecho con una case
if(edadCarlos >=18 && edadmoises >=18) // operador Y
System.out.println(" Carlos y Moisés son mayores de edad");
else if(edadCarlos==edadmoises)
System.out.println(" Carlos y Moisés tienen la misma edad");
else if(edadCarlos<=18 && edadmoises<=18)
System.out.println(" Carlos y Moisés son menores de edad");
else if(edadCarlos< edadmoises)
System.out.println("Carlos en más joven que Moisés");
else if(edadCarlos> edadmoises)
System.out.println("Carlos en mayor que Moisés");
else if(edadCarlos==0 && edadmoises==0)
System.out.println("Has decido salir del bucle de edades ");
else
System.out.println(" Carlos y Moisés, la combinación no es encontrada");
}
Gracias. He decidido empezar desde 0 con más calma.