Está en la página 1de 7

III. ENTRADA Y SALIDA. MANEJANDO JOPTIONPANE, BUFFEREDREADER Y SCANNER.

• La entrada de datos es más sensible a los errores, si la entrada de datos no es del tipo
correcto, el programa falla. Este tipo de error se llama excepción. Java provee mecanismos
especiales para manejar las excepciones.
• La forma más simple de manejar las excepciones de entrada/salida es a través de la cláusula
throws IOException sólo hay que agregar está cláusula a la declaración del método main.
• La entrada de datos al programa lo podemos manejar de dos formas diferentes, manejando:
JoptionPane y/o utilizando la clase Bufferedreader o la clase Scanner.

USANDO LA CLASE BufferedReader

import java.io.*; import java.io.*;


class Fecha{
class XAreaCirculo{
private float radio; private String nombre;
XAreaCirculo(){
private int edad;
radio=0;
} Fecha(String xnom, int xedad){
void calcular()throws IOException{ nombre=xnom;
InputStreamReader lector = new InputStreamReader(System.in); edad=xedad;
BufferedReader entrada = new BufferedReader(lector); }
System.out.println("Escribe el radio : "); void desplegar(){
String cadena = entrada.readLine(); System.out.println(nombre + " Tu tienes " + edad + " anios ahora ");
radio = Float.parseFloat(cadena); int anio = 2009 - edad;
System.out.print("El area del circulo de radio " + radio);
double area = Math.PI * radio * radio;
System.out.println("Probablemente naciste en " + anio);
System.out.println(" es " + area); }
}
}
} public class Nacimiento {
public class AreaCirculo { public static void main(String[] args) throws IOException {
public static void main(String[] args) throws IOException { BufferedReader lector = new BufferedReader(new InputStreamReader(System.in));
XAreaCirculo ar = new XAreaCirculo();
ar.calcular(); System.out.println("Escribe tu Nombre: ");
} String nombre = entrada.readLine();
}
System.out.println("Escribe tu edad: ");
int edad = Integer.parseInt(entrada.readLine());

Fecha fec = new Fecha(nombre, edad);


fec.desplegar();
}
}

1
USANDO LA CLASE JOptionPane (Pertenece a la clase Swing)

import javax.swing.JOptionPane;

class XAreaCirculo{
private float radio;
XAreaCirculo(){
radio=0;
}

void calcular(){
String str_radio;

str_radio = JOptionPane.showInputDialog("Escribe el Radio:");

radio = Float.parseFloat(str_radio);

System.out.print("El area del circulo de radio " + radio);


double area = Math.PI * radio * radio;
System.out.println(" es " + area);

}
}
public class AreaCirculo1 {
public static void main(String[] args) {
XAreaCirculo ar = new XAreaCirculo();
ar.calcular();
}
}

import javax.swing.JOptionPane;
class XLeeData{
String nombre, apellido;
XLeeData(){
nombre=JOptionPane.showInputDialog(null,"Escribe tu Nombre:", "Muestra de Dialogo de
Entrada",JOptionPane.INFORMATION_MESSAGE);
apellido=JOptionPane.showInputDialog(null,"Escribe tu Apellido:", "Muestra de Dialogo de
Entrada",JOptionPane.INFORMATION_MESSAGE );
}

void desplegar(){
String nombre_completo;
nombre_completo = nombre+" " + apellido;
JOptionPane.showMessageDialog(null,nombre_completo,"Tu Nombre Completo
es:",JOptionPane.INFORMATION_MESSAGE );
}

}
public class LeeData {
public static void main(String args[]){
XLeeData ld = new XLeeData();
ld.desplegar();
}
}

2
USANDO LA CLASE SCANNER (Pertenece a la clase java.util)

• Desde Java 1.5 disponemos de la clase Scanner. La cual nos va a ayudar a leer los datos de
una forma más sencilla que el habitual manejo de Lectura de datos por Consola con Java.

• La utilización de la clase Scanner es muy sencilla. Lo primero que tenemos que hacer es
declarar un objeto Scanner instanciándolo contra la consola, es decir, contra el objeto
System.in

Scanner reader = new Scanner(System.in);

• Ahora, para leer lo que el usuario está introduciendo por la consola deberemos utilizar el
método next. Este nos devolverá los caracteres que encuentre en la consola hasta
encontrarse un retorno de carro y salto de línea. El valor se lo asignaremos a una variable
String. String sTexto = reader.next();

EJEMPLO
import java.util.*;
import java.io.*;
class XUsoScanner{
private String nombre;
private int AnnodeNacimiento;
private float altura;
private double altura1;
private char opcion;
private short edad;

void leer(){
Scanner sc= new Scanner(System.in);

System.out.print("Ingrese nombre: ");


nombre= sc.next();

System.out.print("Ingrese año de nacimiento: ");


AnnodeNacimiento = sc.nextInt();

System.out.print("Ingrese altura: ");


altura= sc.nextFloat();

System.out.print("Ingrese opcion: ");


opcion=sc.next().charAt(0);

System.out.print("Ingrese edad: ");


altura1= sc.nextDouble();

System.out.println(opcion+" "+nombre+" "+AnnodeNacimiento+" "+altura+" "+edad);


}
}
public class UsoScanner {
public static void main(String[] args)throws IOException {
XUsoScanner ne=new XUsoScanner();
ne.leer();

}
}

3
Manejo de Excepciones: Una excepción (exception) es un evento que ocurre en tiempo de ejecución
y que indica que algo está mal en el programa. Las excepciones en Java son representadas a través
de objetos de la clase Exception.

• Las excepciones son creadas por el sistema para alertar al usuario sobre un evento que de
otra manera pasaría desapercibido. En java las excepciones pueden ser manejadas a través
de las clausulas try y catch.

import java.io.*;
class XEntrada{
String nombre;
int edad;
double saldo;

void leer_cadena(){
try{
InputStreamReader lector = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(lector);
System.out.println("Escribe tu nombre: ");
nombre = br.readLine();
}
catch(IOException e){System.out.println ("Error de Lectura");}
}

void leer_entero(){
try{
String cad;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Escribe tu edad: ");
cad = br.readLine();
edad = Integer.parseInt(cad);
}
catch(IOException e){System.out.println ("Error de Lectura");}
}

void leer_doble(){
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Escribe tu deposito: ");
saldo = Double.parseDouble(br.readLine());
}
catch(IOException e){System.out.println ("Error de Lectura");}
}

void imprimir(){
System.out.println("Hola, "+ nombre + " tu edad es: " + edad + " y tu Deposito fue : "+saldo);
}
}
public class EntradaDatos1 {
public static void main(String[] args) throws IOException {
XEntrada ent = new XEntrada();
ent.leer_cadena();
ent.leer_entero();
ent.leer_doble();
ent.imprimir();
}
}

4
5
Los nombres de las excepciones indican la condición de error que representan. Las siguientes son las
excepciones predefinidas más frecuentes que se pueden encontrar:

EXCEPCIÓN DESCRIPCION
ArithmeticException Las excepciones aritméticas son típicamente el resultado de una
división por 0
NullPointerException Se produce cuando se intenta acceder a una variable o método
antes de ser definido
IncompatibleClassChangeException El intento de cambiar una clase afectada por referencias en otros
objetos, específicamente cuando esos objetos todavía no han sido
recompilados.

ClassCastException El intento de convertir un objeto a otra clase que no es válida.

NegativeArraySizeExceptio Puede ocurrir si hay un error aritmético al intentar cambiar el tamaño


de un array
OutOfMemoryException No debería producirse nunca! El intento de crear un objeto con el
operador new ha fallado por falta de memoria. Y siempre tendría que
haber memoria suficiente porque el garbage collector se encarga de
proporcionarla al ir liberando objetos que no se usan y devolviendo
memoria al sistema.
NoClassDefFoundException Se referenció una clase que el sistema es incapaz de encontrar

ArrayIndexOutOfBoundsException Es la excepción que más frecuentemente se produce. Se genera al


intentar acceder a un elemento de un array más allá de los límites
definidos inicialmente para ese array.

6
Las cadenas de caracteres

• Una cadena es una secuencia de caracteres. Las palabras, oraciones y nombres son
cadenas.
• Los strings u objetos de la clase String se pueden crear de la siguiente forma:
String str=new String("El primer programa"); ó String str="El primer programa";

• Para crear un string nulo se puede hacer de estas dos formas:


String str=""; ó String str=new String();

Métodos mas usados en la clase String:

length():El método length da la cantidad de caracteres de la cadena


charAt():El método charAt extrae el carácter en la posición señalada
indexOf():El método indexOf extrae la posición señalada de la cadena
substr(): extrae una subcadena de la cadena, indicando el carácter de inicio y de fin.
equals() compara dos cadenas para ver si su contenido es igual. Retorna un boleano.

class XCadena1{
private String str;

XCadena1(){
str = "Desarrollo de Software II";
}
void valida(){
System.out.println("La cadena completa es: "+str);
System.out.println("Esta cadena contiene " + str.length() + " caracteres");
System.out.println("El caracter en la posicion 4 es " + str.charAt(4));
System.out.println("La posicion del caracter w es " + str.indexOf('w'));

System.out.println("La subcadena es: "+ str.substring(3, 10));

String str1="Software II";


String str2=new String("Software II");

if(str1.equals(str2)){
System.out.println("El mismo contenido");
}else{
System.out.println("Distinto contenido");
}
}
}

public class Cadena1 {


public static void main(String[] args) {
XCadena1 cad = new XCadena1();
cad.valida();
}
}

Investigar estos otros métodos de la clase String:

startsWith, endsWith, compareTo, trim, valueOf

También podría gustarte