style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Aprendiendo Java en "serio" ... [007]

Temario muy básico de Java

  1. Compilar y ejecutar programas Java: java, javac,etc.
  2. Arreglos: vectores y matrices
  3. Introducir datos en Java: Scanner, BufferedReader, JOptionPane, etc.
  4. Uso de Collections: List, HashMap, etc.
  5. Java Swing básico
  6. Proyecto sencillo no.1
  7. IDEs: Eclipse y NetBeans
  8. Java y las base de datos
  9. Proyecto sencillo no.2
  10. Java y XML
  11. 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 class Pertenece{

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

import javax.swing.JOptionPane;

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

import java.io.File;

public interface Servicios {
        public abstract File crear(String nombre);
        public abstract void leer(File nombre);
}

ServiciosImpl.java

import java.io.BufferedWriter;
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 static java.lang.System.out;
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

/*no es es si una lista enlazada, solo es un ejemplo de como funciona

*/


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

class Nodo:
  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.BigDecimal;
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:

  1. Seleccionar explícitamente un miembro de una clase
  2. Hacer llamadas en cascada a métodos de la misma clase

TiposProgramadores.java

public enum TiposProgramadores {
        ENTRY_LEVEL,JUNIOR,MID_LEVEL,SENIOR,MASTER;
}

Programador.java

public class Programador {
        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

import java.util.Scanner;
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

  1. Presentación del tutorial
  2. Compilar y ejecutar programas java con comandos
  3. Arreglos: vectores y matrices
  4. Introducir datos en Java: Scanner, BufferedReader, JOptionPane, etc.
  5. Uso de Collections: List, HashMap, etc.
  6. Java Swing Básico


El que quiere aprender aprende

Las imágenes de Homero Simpson son propiedad de Matt Groening.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">