style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

usar Scanner para leer entrada

Sé que se puede usar la clase Scanner para leer una entrada desde la línea de comandos (consola). Se hace de la siguiente manera (ejemplo para leer números tipo int):

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

          System.out.println ("Ingresa numero tipo int");
          Scanner source = new Scanner (System.in);

          if (source.hasNextInt()) {

                System.out.println ("Has ingresado un int");
          }
          else {
                System.out.println ("NO Has ingresado un int");
          }
     }
}

Lo que quiero saber es: ¿Se puede utilizar un Scanner para leer desde un diálogo (...JOptionPane.showInputDialog) de igual manera?

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de JaimeItlzc

Scanner

Scanner es para entrada desde consola aqui te dejo algo Sobre Console vs Dialog(JOptionPane)I/O.
Java:Console Vs Dialog(JOptionPane

Espero te sirva y comprendas.
Saludos.

Imagen de rulo4

Sccaner

Muchas gracias por responder. Quiero que mi programa reciba cierto tipo de dato, y de no introducir el tipo de dato requerido (ejemplo: int), enviar un mensaje de error; y luego permitir al usuario reintentar. ¡Gracias!

Imagen de JaimeItlzc

Se escribe Scanner

1.- En Java puedes declarar la variable e inicializarla al mismo tiempo por lo que podrías cambiar tu código por algo así:

// int x,y,z,resultado;
        //hacemos la declaracion de tipo String
        //String xVal, yVal, zVal;
        //pedimos al usuario ingresar los valores enteros
        String xVal = JOptionPane.showInputDialog("Escriba primer entero:");
        String yVal = JOptionPane.showInputDialog("Escriba segundo entero:");
        String zVal = JOptionPane.showInputDialog("Escriba tercer entero:");
        //convertimos las variables String a variables int
        int x = Integer.parseInt(xVal);
        int y = Integer.parseInt(yVal);
        int z = Integer.parseInt(zVal);
        // en la siguiente linea calculamos el producto de los tres enteros
        int resultado = x * y * z;
        JOptionPane.showMessageDialog(null,"El producto es:" + resultado);
        System.exit(0);

Que, luce casi igual, pero al menos resulta un poquitito más fácil identificar donde es usada una variable.

2.- Si tienes funcionalidad repetida, puedes crear un método. Aunque de nuevo, en tu código puede parecer exagerado hacer lo siguiente, en un pedazo de código más grande puede valer la pena: "Extraer un método"

Por ejemplo en tu código estas a) tomando información del usuario y b) convirtiendola en un entero. Para ello estás creando tres variables de string temporales ( xVal, yVal y zVal ) y tres variables de int temporales ( x,y, Y z ) ... si usas un método para obtener esa información puedes eliminar esas variables temporales.

private static String getIntValue( String message ) {
         return Integer.parseInt( JOpeiontPane.showInputDialog( message ) );
    }

Tu código final puede verse así:

import javax.swing.JOptionPane;
public class Producto {
    public static void main (String [] args ){
        //iniciamos el calculo de los enteros
        // en la siguiente linea calculamos el producto de los tres enteros
        int resultado = getIntValue("Escriba primer entero:")  *
                        getIntValue("Escriba segundo entero:") *
                        getIntValue("Escriba tercer entero:")
        JOptionPane.showMessageDialog(null,"El producto es:" + resultado);
    }
    private static String getIntValue( String message ) {
         return Integer.parseInt( JOptionPane.showInputDialog( message ) );
    }
}

De esta forma, si quisieras agregar validaciones como también sugiere Jaime, podrías poner la validación en ese nuevo método y no tener que ensuciar el método principal o tener que hacer copy/paste de alguna validación, por ejemplo para forzar a que el usuario introduzca un entero puedes cambiar el método así:

private static String getIntValue( String message ) {
         String value = "";

         while( ! ( value = JOptionPane.showInputDialog(message)).matches("\\d+"));

         // este while se  lee así:
         // mientras el valor regresado por el joption pane, no "matchee" o coincida
         // con uno o más enteros
         // vuelvelo a pedir.

         return Integer.parseInt( value );
    }

O también podrías usar un componente que ya haga la validación, todo, sin tener que cambiar la función que lo llama.

Por último, el System.exit(0); puede omitirse, por default es el valor con el que termina Java.

Espero que esto te sirva... chau!!!

Este Ejemplo Fue proporcionado por un Miembro de la Comunidad @OscarRyz
Y este es el link Explicación

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">