lunes, 1 de octubre de 2012




                      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) {
          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");
          
}
     
}
}
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í:
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.

¿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                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              

                       

No hay comentarios:

Publicar un comentario