programación i - Universidad ORT Uruguay
programación i - Universidad ORT Uruguay
programación i - Universidad ORT Uruguay
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
110 Programación I<br />
Cada catch ‘captura’ un tipo especial de excepción. En el ejemplo quedaría, luego de estar<br />
definidos opcion e input (que corresponden respectivamente a la variable de tipo int en la que se<br />
leerá la opción y a la instancia de Scanner):<br />
// ingreso y valido la opción del usuario<br />
try {<br />
opcion = input.nextInt();<br />
}<br />
catch (InputMismatchException e) {<br />
System.out.println("Error, se ignora la entrada");<br />
opcion = 0;<br />
input.next();<br />
}<br />
En este caso se optó por tomar como que se hubiera ingresado un “0” (si dio error). Es<br />
fundamental colocar la sentencia input.next() para poder luego leer el siguiente dato.<br />
12.1.7 Ingreso de datos<br />
Otro punto interesante para analizar es: ¿dónde va el código de solicitar datos por pantalla? Una<br />
opción es poner un método de clase que los pida. Este método podría ir en la clase de prueba,<br />
pero pensando en un posible re-uso, podría ir en la clase correspondiente. Formalmente<br />
convendría que fuera en otro paquete independiente, pero para esta altura del curso de<br />
Programación I se prefiere incluirlo en la propia clase para no agregar más clases.<br />
En este ejemplo particular, para crear un gasto, se incluye en la clase Gasto:<br />
public static Gasto crearGasto() {<br />
Gasto unG;<br />
boolean ok;<br />
Scanner input = new Scanner(System.in);<br />
input.useDelimiter(System.getProperty("line.separator"));<br />
unG = new Gasto();<br />
ok = false;<br />
// pide datos, validando formato ok<br />
while (!ok) {<br />
try {<br />
System.out.println("Ingrese día ");<br />
unG.setDia(input.nextInt());<br />
System.out.println("Ingrese descripción ");<br />
unG.setDescripcion(input.next());<br />
System.out.println("Ingrese monto ");<br />
unG.setMonto(input.nextInt());<br />
ok = true;<br />
} catch (InputMismatchException e) {<br />
System.out.println("Datos erróneos, reingrese ");<br />
input.next();<br />
}<br />
}<br />
return unG;<br />
}