introduccion
En este documento contiene un poco de informacion sobre como utilizar Scanner en java
como tambien algunos ejemplos de como utilizar el mismo...
Como utilizar Scanner en java
se puede usar la
clase Scanner para leer una entrada desde la línea de comandos Se hace
de la siguiente manera
Import java.util.Scanner;
Public class Main {
Public static void main(String [] args) {
if (source.hasNextInt()) {
System.out.println ("Has ingresado un int");
}
else {
System.out.println ("NO Has ingresado un int");
}
}
}
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.
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í:
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.
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.
¿Que es Scanner?
La clase Scanner que se introdujo a partir de java 5 tiene varias utilidades. Puede separar o romper su dato de entrada en subcadenas o “tokens” y además convertir estos datos en tipos primitivos como enteros, flotantes, etc. Por ejemplo, puedo pasarle un dato String como argumento al constructor, definir su patrón delimitador (por defecto: espacio en blanco) y obtener subcadenas cuyos miembros debo recoger uno a uno mediante el método next() o algunos de sus similares (nextInt(), nextByte()… para cada dato primitivo existe un next()).
en este video podemos ver un poco
de como utilizar Scanner en java.
http://www.youtube.com/watch?v=nbLYAGjBQCI