Aprendiendo Java en "serio" ... [007]
Temario muy básico de Java
- Compilar y ejecutar programas Java: java, javac,etc.
- Arreglos: vectores y matrices
- Introducir datos en Java: Scanner, BufferedReader, JOptionPane, etc.
- Uso de Collections: List, HashMap, etc.
- Java Swing básico
- Proyecto sencillo no.1
- IDEs: Eclipse y NetBeans
- Java y las base de datos
- Proyecto sencillo no.2
- Java y XML
- Frameworks
No he tenido tiempo para realizar el proyecto sencillo (ustedes disculpen), en cambio decidi hacer más ejercicios y poner un poco de teoría.
Ejercicios
Ej. 1 ... Uso del operador instanceof
Cuando queremos saber a que clase pertenece un objeto contamos con el operador instanceof
Pertenece.java
public boolean pertenece(Object obj){
boolean aux=false;
if(obj instanceof String){aux=true;}
else if(obj instanceof Integer){aux=true;}
else if(obj instanceof Double){aux=true;}
return aux;
}
public static void main(String[] args)throws Exception{
Pertenece t=new Pertenece();
Double d=new Double("2.1");
if(t.pertenece(d)){
System.out.println("pertenece a Double");
}else{
System.out.println("no pertenece a ninguna de las clases definidas en el metodo");
}
}
}
Compilar: javac -g Pertenece.java
Ejecutar:java Pertenece
Ej. 2 ... Un ejemplo sencillo con enumeraciones
Si quiero contar el número de HOMBRES o MUJERES que ingresan en una lista puedo usar la enumeraciones (enum).
Enumeraciones.java
enum Genero{
HOMBRE, MUJER;
}
public class Enumeracion{
private Genero genero;
public Enumeracion(Genero genero){
this.genero=genero;
}
public static void main(String ... args)throws Exception{
Enumeracion p;
Enumeracion q;
int c1=0,c2=0;
String[] vector=new String[args.length];
if(args.length!=0){
//llenar lista
for(int i=0;i<args.length;i++){
vector[i]=args[i];
System.out.println("entradas : "+vector[i]);
}
//System.out.println("Lista completa: "+lista);
for(String e: vector){
if(e.equals("HOMBRE")){
p=new Enumeracion(Genero.HOMBRE);
c1++;
}else if(e.equals("MUJER")){
q=new Enumeracion(Genero.MUJER);
c2++;
}else{
}
}
System.out.println("Hombres: "+c1);
System.out.println("Mujeres: "+c2);
}else{
JOptionPane.showMessageDialog(null,"no hay nada que escribir");
}
}
}
Compilar: javac -g Enumeracion.java
Ejecutar:java Enumeracion HOMBRE HOMBRE MUJER HOMBRE MUJER MUJER HOMBRE MUJER MUJER
Ej. 3 ... Manejo de archivos
Es común en el sitio usuarios pidiendo programas para el manejo de archivos, para esto se tiene la clase File. El programa es muy sencillo y solo muestra un poco de lo que se puede hacer con esa clase.
Para crear un archivo basta con: java.io.File f=new File("datos.txt");
Servicios.java
ServiciosImpl.java
import java.io.File;
import java.io.FileWriter;
import java.util.Scanner;
public class ServiciosImpl implements Servicios {
@Override
public File crear(String nombre) {
File f=new File(nombre);
return f;
}
@Override
public void leer(File f) {
System.out.println("\t[Contenido del archivo]");
System.out.println( "**************************"+f.getName()+"**********************************");
System.out.println( "Camino: "+f.getPath()+" ... ruta "+f.getAbsolutePath() );
System.out.println( "Fichero existente " );
System.out.println( (f.canRead()? "y se puede Leer":" no se puede leer"));
System.out.println("");
System.out.println( (f.canWrite()?"se puese Escribir":" no se puede escribir"));
System.out.println( "." );
System.out.println( "La longitud del fichero son "+f.length()+" bytes" );
System.out.println( "***************************************************************************");
}
}
MainServicios.java
import java.util.Scanner;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
public class MainServicios {
/**
* @param args
*/
public static void main(String[] args)throws Exception {
int opcion=0;
String nombre="datos.txt";
Scanner teclado=new Scanner(System.in);
//MainServicios miServicio=new MainServicios();
ServiciosImpl servicios=new ServiciosImpl();
File f=new File("datos.txt");
for(;;){
opcion=menu();
switch(opcion){
case 1:
do{
out.println("nombre del archivo a crear: ");
nombre=teclado.nextLine();
}while(nombre.equals(""));
servicios.crear(nombre);
out.println("... archivo creado");
break;
case 2:
servicios.leer(f);
System.out.println("... hecho");
break;
case 3:
String texto="";
try{
BufferedWriter bw =
new BufferedWriter(new FileWriter(new File(nombre)));
Scanner t=new Scanner(System.in);
System.out.println("Escribe texto: ");
texto=t.nextLine();
bw.write("tu escribiste: " + texto + "\n");
bw.close();
}
catch (Exception e){
e.printStackTrace();
}
System.out.println("... hecho");
break;
case 4:System.exit(0);break;
}
}
}
static int menu()throws Exception{
int opc=0;
Scanner t=new Scanner(System.in);
out.println("\t[Menu]");
out.println("\t1. Crear archivo");
out.println("\t2. Leer archivo");
out.println("\t3. Escribir en archivo");
out.println("\t4. Salir");
do{
out.println("\nTu opcion es:");
opc=t.nextInt();
}while(opc<0||opc>4);
return opc;
}
}
Compilar: javac -g MainServicios.java
Ejecutar:java MainServicios
Ej. 4 ... Ejemplo con nodos
Un ejemplo de como funciona una lista "enlazada". Una lista enlazada es una colección de nodos (elementos) dispuestos uno a continuación de otro, cada uno de ellos conectadoa al siguiente por un enlace o puntero.
Nodo.java
*/
public class Nodo {
private int valor;
private Nodo sig;
public Nodo(int valor,Nodo sig){
this.valor=valor;
this.sig=sig;
}
public Nodo(){}
public static void main(String[] args)throws Exception {
Nodo t1=new Nodo();
Nodo t2=new Nodo(30,t1);
Nodo t3=new Nodo(34,t2);
Nodo t4=new Nodo(36,t3);
System.out.println("valor: "+t4.valor);
System.out.println("valor: "+t4.sig.valor);
System.out.println("valor: "+t4.sig.sig.valor);
System.out.println("valor: "+t4.sig.sig.sig.valor);
}
}
Compilar: javac -g Nodo.java
Ejecutar:java Nodo
En Python sería:
Nodo.py
def __init__(self,valor,sig=None):
self.valor=valor
self.sig=sig
#main
lista=Nodo(30,Nodo(34,Nodo(36)))
print "valor: ",lista.valor
print "valor: ",lista.sig.valor
print "valor: ",lista.sig.sig.valor
En lenguajes más viejitos como C las listas enlazadas si causaban mucho sufrimiento (snif).
Ej. 5 ... Uso de BigDecimal
Decimal.java
import java.math.RoundingMode;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Decimal{
public static void main (String[] args)throws IOException,Exception {
BufferedReader teclado=new BufferedReader(new InputStreamReader(System.in));
BigDecimal num1= new BigDecimal("0.9823");
num1 =num1.setScale(2, RoundingMode.HALF_UP);
System.out.println("Cifra 0.9823 redondeada es: "+num1);
//introduciendo datos
System.out.println("Introduce un número:");
String num2=teclado.readLine();
System.out.println("Cifra "+num2);
BigDecimal bgnum2=new BigDecimal(num2);
bgnum2=bgnum2.setScale(2, RoundingMode.HALF_UP);
System.out.println("redondeada es: "+bgnum2);
}
}
Compilar: javac -g Decimal.java
Ejecutar:java Decimal
Ej. 6 ... Uso del operador this
Tiene dos usos:
- Seleccionar explícitamente un miembro de una clase
- Hacer llamadas en cascada a métodos de la misma clase
TiposProgramadores.java
ENTRY_LEVEL,JUNIOR,MID_LEVEL,SENIOR,MASTER;
}
Programador.java
private String nombre,apellidoP,apellidoM;
private int edad;
private String email,telefono,direccion;
private TiposProgramadores tipoProg;
public Programador(){}
public Programador asignarDatos(String nombre,String apellidoP,String apellidoM,int edad,String email,String telefono,String direccion,TiposProgramadores tipoProg){
this.setNombre(nombre);
this.setApellidoP(apellidoP);
this.setApellidoM(apellidoM);
this.setEdad(edad);
this.setEmail(email);
this.setTelefono(telefono);
this.setDireccion(direccion);
this.setTipoProg(tipoProg);
return this;
}
public Programador verDatos(){
System.out.println("\t["+Programador.class.toString()+"]");
System.out.println("\tNombre: "+this.nombre);
System.out.println("\tApellido paterno: "+this.apellidoP);
System.out.println("\tApellido materno: "+this.apellidoM);
System.out.println("\tEdad: "+this.edad);
System.out.println("\tTelefono: "+this.telefono);
System.out.println("\tEmail: "+this.email);
System.out.println("\tDireccion: "+this.direccion);
System.out.println("\tNivel: "+this.tipoProg);
return this;
}
private String getNombre() {
return nombre;
}
private void setNombre(String nombre) {
this.nombre = nombre;
}
private String getApellidoP() {
return apellidoP;
}
private void setApellidoP(String apellidoP) {
this.apellidoP = apellidoP;
}
private String getApellidoM() {
return apellidoM;
}
private void setApellidoM(String apellidoM) {
this.apellidoM = apellidoM;
}
private int getEdad() {
return edad;
}
private void setEdad(int edad) {
this.edad = edad;
}
private String getTelefono() {
return telefono;
}
private void setTelefono(String telefono) {
this.telefono = telefono;
}
private String getEmail() {
return email;
}
private void setEmail(String email) {
this.email = email;
}
private TiposProgramadores getTipoProg() {
return tipoProg;
}
private void setTipoProg(TiposProgramadores tipoProg) {
this.tipoProg = tipoProg;
}
private String getDireccion() {
return direccion;
}
private void setDireccion(String direccion) {
this.direccion = direccion;
}
}
PruebaProgramador.java
public class PruebaProgramador {
/**
* @param args
*/
public static void main(String[] args) {
TiposProgramadores tipos=TiposProgramadores.ENTRY_LEVEL;
Programador programador;
Scanner t=new Scanner(System.in);
String nombre="",telefono="",email="";
String apellidoP="",apellidoM="",direccion="";
int edad=0,nivel=0;
System.out.println("[Datos]");
do{
System.out.println("Nombre: ");
nombre=t.nextLine();
System.out.println("Apellido paterno: ");
apellidoP=t.nextLine();
System.out.println("Apellido materno: ");
apellidoM=t.nextLine();
System.out.println("Edad: ");
edad=t.nextInt();
System.out.println("Direccion: ");
direccion=t.nextLine();
System.out.println("Telefono: ");
telefono=t.nextLine();
System.out.println("Email: ");
email=t.nextLine();
System.out.println("Nivel: ");
nivel=t.nextInt();
}while(nombre.equals("")|| apellidoP.equals("") || apellidoM.equals("")|| direccion.equals("")|| telefono.equals("")|| email.equals("")|| edad<0 || nivel<0 );
programador=new Programador();
/*ahora se pueden concatenar los métodos*/
programador.asignarDatos(nombre, apellidoP, apellidoM, edad, email, telefono, direccion, elegir(nivel)).verDatos();
}
public static TiposProgramadores elegir(int nivel){
TiposProgramadores tipos=TiposProgramadores.ENTRY_LEVEL;
switch(nivel){
case 0: tipos=TiposProgramadores.ENTRY_LEVEL;
//System.out.println("Programador nivel: "+tipos.name().toString());
break;
case 1: tipos=TiposProgramadores.JUNIOR;
//System.out.println("Programador nivel: "+tipos.name().toString());
break;
case 2: tipos=TiposProgramadores.MID_LEVEL;
//System.out.println("Programador nivel: "+tipos.name().toString());
break;
case 3: tipos=TiposProgramadores.SENIOR;
//System.out.println("Programador nivel: "+tipos.name().toString());
break;
case 4: tipos=TiposProgramadores.MASTER;
//System.out.println("Programador nivel: "+tipos.name().toString());
break;
}
return tipos;
}
}
Compilar: javac -g PruebaProgramador.java
Ejecutar:java PruebaProgramador
Post anteriores
- Presentación del tutorial
- Compilar y ejecutar programas java con comandos
- Arreglos: vectores y matrices
- Introducir datos en Java: Scanner, BufferedReader, JOptionPane, etc.
- Uso de Collections: List, HashMap, etc.
- Java Swing Básico

El que quiere aprender aprende
Las imágenes de Homero Simpson son propiedad de Matt Groening.
- Sr. Negativo's blog
- Inicie sesión o regístrese para enviar comentarios



Comentarios recientes
hace 8 horas 51 mins
hace 11 horas 47 segs
hace 13 horas 23 mins
hace 15 horas 22 mins
hace 16 horas 1 min
hace 16 horas 25 mins
hace 16 horas 25 mins
hace 18 horas 31 mins
hace 22 horas 23 mins
hace 23 horas 4 mins