Leer números y comprobar si son positivos o negativos y pares o impares

Ejercicio básico resuelto con estructura repetitiva

Programa que lea números enteros por teclado y para cada número introducido indique si es positivo o negativo y si es par o impar. Se deben realizar tres versiones del programa:
  1. En la primera versión se utilizará un bucle while. La lectura de números finalizará cuando se introduzca un cero.
  2. En la segunda versión se utilizará un bucle do .. while. La lectura de números en esta versión también finaliza cuando se introduzca un cero.
  3. En la tercera versión también se utilizará un bucle do .. while pero en este caso la lectura de números finaliza cuando se responda ‘N’ ó ‘n’ a la pregunta “Desea introducir más números? (S/N):”
Ejercicio resuelto:
Solución 1: utilizando un bucle while y finalizando cuando se introduce un cero.
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int numero;

        System.out.print("Introduce un número (0 para acabar): ");
        numero = sc.nextInt();

        while (numero != 0) {

            if (numero > 0) {
                System.out.print("Positivo");
            } else {
                System.out.print("Negativo");
            }
            if(numero % 2 == 0){
                System.out.println(" Par");
            }else{
                System.out.println(" Impar");
            }

            System.out.print("Introduce un número (0 para acabar): ");                                  
            numero = sc.nextInt();
        }
    } 
}

Solución 2: utilizando un bucle do .. while y finalizando cuando se introduce un cero.
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int numero;

        do {

            System.out.print("Introduce un número (0 para acabar): ");                                  
            numero = sc.nextInt();

            if (numero != 0) {
                if (numero > 0) {
                    System.out.print("Positivo");
                } else {
                    System.out.print("Negativo");
                }
                if (numero % 2 == 0) {
                    System.out.println(" Par");
                } else {
                    System.out.println(" Impar");
                }
            }

        } while (numero != 0);
    } 
}

Solución 3: utilizando un bucle do .. while y finalizando cuando se responde ‘n’ ó ‘N’ a la pregunta  “Desea introducir más números? (S/N):”.
import java.util.Scanner;
import java.io.IOException;

public class Main {

    public static void main(String[] args) throws IOException{

        Scanner sc = new Scanner(System.in);
        int numero;
        char respuesta;

        do {

            System.out.print("Introduce un número: ");
            numero = sc.nextInt();

            if (numero != 0) {
                if (numero > 0) {
                    System.out.print("Positivo");
                } else {
                    System.out.print("Negativo");
                }
                if (numero % 2 == 0) {
                    System.out.println(" Par");
                } else {
                    System.out.println(" Impar");
                }
            }

            System.out.print("Desea introducir más números? (S/N): ");                                  
            respuesta = (char) System.in.read();

        } while (respuesta != 'N' && respuesta != 'n');
    } 
}

11 comentarios:

  1. Buenas Enrique!...He estado intentando usar Scanner sc = new Scanner(System.in) con respuesta= sc.nextLine() para ingresar N/S, teniendo en cuenta que te pide elemento de tipo String, pero no me resulta por ningún lado, el programa lo salta....Gracias

    ResponderEliminar
  2. cambia esta linea
    respuesta = (char) System.in.read();

    por
    respuesta = sc.next().charAt(0);

    ResponderEliminar
  3. Buenas, he probado a mirar el resultado final poniendo el operador logico || en vez de && porque deberia ser , mientras no pase que caracter sea n , o, N en vez de poner n y , N
    pero si lo pongo así , no me lo coge y me pide tres veces introducir mas numeros, como tu pones está bien pero, ¿podrias decirme porque no vale con el operador ||?

    Gracias un saludo

    ResponderEliminar
    Respuestas
    1. Yo también tengo la misma duda. ?????
      Gracias.

      Eliminar
    2. lo que sucede es que tiene que ser el and lógico(&&) pues entiende que si es diferente de N o n, se convierte en true y sigue ejecutándose, la opción correcta es hacer N and n como condición.

      Eliminar
  4. ayuda con este xrfavor

    Desarrollar un programa que pida números pares mientras el usuario indique que quiere seguir introduciendo números. Para indicar que quiere seguir escribiendo números, el usuario deberá contestar Si a la pregunta. Contar cuantos números pares se ha ingresado.

    Escriba un número par: 4
    ¿Quiere escribir otro número par? (Si/No): S
    Escriba un número par: 8
    ¿Quiere escribir otro número par? (Si/No): s
    Escriba un número par: 7
    7 no es un número par. Inténtelo de nuevo: 6
    ¿Quiere escribir otro número par? (Si/No): N

    ResponderEliminar
  5. 3. Desarrollar un programa que pida números pares mientras el usuario indique que quiere seguir introduciendo números. Para indicar que quiere seguir escribiendo números, el usuario deberá contestar Si a la pregunta. Contar cuantos números pares se ha ingresado.

    Escriba un número par: 4
    ¿Quiere escribir otro número par? (Si/No): S
    Escriba un número par: 8
    ¿Quiere escribir otro número par? (Si/No): s
    Escriba un número par: 7
    7 no es un número par. Inténtelo de nuevo: 6
    ¿Quiere escribir otro número par? (Si/No): N
    Ha escrito 3 números pares.

    ResponderEliminar
  6. En la solución numero 3 creo que falta incluir import java.io.IOException; y también throws IOException

    ResponderEliminar
    Respuestas
    1. Tienes razón. Ya está modificado. Gracias por avisar!!

      Eliminar
  7. 1. Ingresar un número entero positivo verificando que tenga dos dígitos y determinar si la suma de sus dígitos corresponde a un número impar.

    AYUDEN CON ESTE

    ResponderEliminar