Java – Clase java.util.Scanner – Lectura de entrada estándar (teclado)

————————-
Elige una opcion:
[a]- SUMAR
[b]- RESTAR
[c]- MULTIPLICAR
[d]- DIVIDIR

[m]- Muestra este menu
[x]- Sale del programa

c
Introduce un valor:
5
Introduce otro valor:
10
Resultado de la multiplicacion: 50
————————-

/**
 * ScanStdin.java
 *
 * Ejemplo de la lectura de la entrada estándar utilizando la clase java.util.Scanner, se realizan
 * algunas operaciones aritméticas sencillas con los valores introducidos por el usuario.
 */

import java.io.IOException;
import java.util.InputMismatchException;
import java.util.Scanner;

/**
 *
 * @author Dark[byte]
 */
class ScanStdin {

    private static Scanner sc;

    /**
     * Punto de entrada del programa.
     *
     * Se construyen los recursos necesarios para leer desde la entrada estándar, se muestra
     * el menú de opciones y se inicia el bucle del programa.
     *
     * @param args argumentos de la línea de comandos.
     * @throws IOException si hay un fallo en la entrada\salida del flujo de datos.
     */
    public static void main(String[] args) throws IOException {
        sc = new Scanner(System.in);

        menu();

        loop();
    }

    /**
     * Muestra el menú de opciones
     */
    private static void menu() {
        System.out.println("-------------------------\n"
                + "Elige una opcion:\n"
                + "[a]- SUMAR\n"
                + "[b]- RESTAR\n"
                + "[c]- MULTIPLICAR\n"
                + "[d]- DIVIDIR\n"
                + "-\n"
                + "[m]- Muestra este menu\n"
                + "[x]- Sale del programa\n");
    }

    /**
     * Bucle del programa. Se mantiene en espera de la introducción de datos
     * desde la entrada estándar. Finaliza si se detecta "x".
     *
     * @throws IOException si hay un fallo en la entrada\salida del flujo de datos.
     */
    private static void loop() throws IOException {
        String s = "";

        while (true) {
            s = sc.next();

            try {
                if (s.equalsIgnoreCase("a") == true) {
                    suma();
                } else if (s.equalsIgnoreCase("b") == true) {
                    resta();
                } else if (s.equalsIgnoreCase("c") == true) {
                    multiplica();
                } else if (s.equalsIgnoreCase("d") == true) {
                    divide();
                } else if (s.equalsIgnoreCase("m") == true) {
                    menu();
                } else if (s.equalsIgnoreCase("x") == true) {
                    break;
                } else {
                    System.out.println("Opcion desconocida. Escribe \"m\" para ver el menu de opciones");
                }
            } catch (InputMismatchException ime) {
                System.out.println("Valor invalido: " + ime.getLocalizedMessage() + "\n-------------------------\n");
            }
        }
    }

    /**
     * Realiza la suma de dos valores.
     *
     * @throws IOException si hay un fallo en la entrada\salida del flujo de datos.
     * @throws InputMismatchException si se introduce un valor invalido.
     */
    private static void suma() throws IOException, InputMismatchException {
        int i1, i2, res;

        System.out.println("Introduce un valor:");
        i1 = sc.nextInt();

        System.out.println("Introduce otro valor:");
        i2 = sc.nextInt();

        res = i1 + i2;
        System.out.println("Resultado de la suma: " + res + "\n-------------------------\n");
    }

    /**
     * Realiza la resta de dos valores.
     *
     * @throws IOException si hay un fallo en la entrada\salida del flujo de datos.
     * @throws InputMismatchException si se introduce un valor invalido.
     */
    private static void resta() throws IOException, InputMismatchException {
        int i1, i2, res;

        System.out.println("Introduce un valor:");
        i1 = sc.nextInt();

        System.out.println("Introduce otro valor:");
        i2 = sc.nextInt();

        res = i1 - i2;
        System.out.println("Resultado de la resta: " + res + "\n-------------------------\n");
    }

    /**
     * Realiza la multiplicación de dos valores.
     *
     * @throws IOException si hay un fallo en la entrada\salida del flujo de datos.
     * @throws InputMismatchException si se introduce un valor invalido.
     */
    private static void multiplica() throws IOException, InputMismatchException {
        int i1, i2, res;

        System.out.println("Introduce un valor:");
        i1 = sc.nextInt();

        System.out.println("Introduce otro valor:");
        i2 = sc.nextInt();

        res = i1 * i2;
        System.out.println("Resultado de la multiplicacion: " + res + "\n-------------------------\n");
    }

    /**
     * Realiza la división de dos valores.
     *
     * @throws IOException si hay un fallo en la entrada\salida del flujo de datos.
     * @throws InputMismatchException si se introduce un valor invalido.
     */
    private static void divide() throws IOException, InputMismatchException {
        float i1, i2, res;

        System.out.println("Introduce un valor:");
        i1 = sc.nextFloat();

        System.out.println("Introduce otro valor:");
        i2 = sc.nextFloat();

        res = i1 / i2;
        System.out.println("Resultado de la division: " + res + "\n-------------------------\n");
    }
}

, , , , , ,

  1. #1 por sumi 16 musica el septiembre 29, 2012 - 4:13 am

    Muy bueno! ejeje pero emm Me podrían dar un ejemplo de java.uti.scanner :D

    • #2 por Dark[byte] el octubre 2, 2012 - 4:51 pm

      Hola. En este ejemplo se utiliza java.util.Scanner. Salu2!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: