lunes, 22 de febrero de 2021

JAVA: Ejercicio sobre serialización

El enunciado es: Realizar un programa que cuente el número de vocales que hay en un fichero de texto. Pasar como argumento al programa el nombre del archivo.


CuentaVocales.java

package cuentavocales;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class CuentaVocales {

    public static void main(String[] args) {
        try {
            String vocales = "aeiou";
            int nvocales = 0;
            FileInputStream is = new FileInputStream(args[0]);
            byte []b = new byte[10];
            while(is.read(b)!=-1) {
                for(byte c: b) {
                    if(vocales.contains(Character.toString((char)c)))
                        nvocales++;
                }
                b = new byte[10];
            }
            is.close();
            System.out.println("Vocales: "+nvocales);
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
    
}

Puedes ver todos mis ejercicios de JAVA en este enlace.

lunes, 15 de febrero de 2021

JAVA: Ejercicio sobre interfaces

El enunciado es: En el siguiente post se creó una jerarquía de clases de figuras geométricas. Implementar una interfaz que defina un método que devuelva el número de lados. Hacer que las figuras que tengan lados (el círculo no tiene) la implementen.


Main.java

package main;
import figuras.*;

public class Main {
    public static void main(String[] args) {
        Figuras figuras = new Figuras();
        figuras.annade(new Circulo(3.456));
        figuras.annade(new Triangulo(3.456,2.17));
        figuras.annade(new Cuadrado(2.11));
        if(!figuras.annade(new Triangulo(3.12,5.6),7)) {
            System.out.println("Error al borrar");
        }
        figuras.lista();
        figuras.borra(0);
        figuras.borra(33);
        System.out.println("---------------------");
        figuras.lista();
    }
}

Triangulo.java

package figuras;

public class Triangulo extends Figura implements Lados {
    
    private double base;
    private double altura;
    
    public Triangulo(double base, double altura) {
        this.base = base;
        this.altura = altura;
    }

    @Override
    public double calculaArea() {
        return (base*altura)/2;
    }

    @Override
    public int numLados() {
        return 3;
    }
       
}

Lados.java

package figuras;

public interface Lados {
    abstract public int numLados();
}

Figuras.java

package figuras;

import java.util.LinkedList;

public class Figuras {

    // No hay restricción si utilizamos colecciones (ver unidad 9)
    private LinkedList<Figura> lista = new LinkedList<>();
    
    public void annade(Figura f) {
        lista.add(f);
    }
    
    public void borra() {
        lista.removeLast();
    }
    
    public boolean annade(Figura f, int pos) {
        try {
            lista.add(pos, f);
        }
        catch(Exception e) {
            return false;
        }
        return true;
    }
    
    public void borra(int pos) {
        // Si se intenta borrar una que no existe que no haga nada
        try {
            lista.remove(pos);
        } catch(Exception e) {}
    }
    
    public void lista() {
        for(Figura f: lista) {
            System.out.println("Figura: "+f);
            if(f instanceof Lados) {
                Lados l = (Lados)f;
                System.out.println("\tNum lados: "+l.numLados());
            }
        }
    }
}

Figura.java

package figuras;

public abstract class Figura {
    abstract public double calculaArea();
}

Cuadrado.java

package figuras;

public class Cuadrado extends Figura implements Lados{

    private double lado;
    
    public Cuadrado(double lado) {
        this.lado = lado;
    }
    
    @Override
    public double calculaArea() {
        return lado * lado;
    }

    @Override
    public int numLados() {
        return 4;
    }
    
}

Circulo.java

package figuras;


public class Circulo extends Figura {

    private double radio;
    
    public Circulo(double radio) {
        this.radio = radio;
    }
    
    @Override
    public double calculaArea() {
        return Math.PI*radio*radio;
    }
    
}

Puedes ver todos mis ejercicios de JAVA en este enlace.

lunes, 8 de febrero de 2021

JAVA: Ejercicio sobre polimorfismo

El enunciado es: Crear una clase encargada de almacenar figuras geométricas. La clase deberá disponer de métodos que permitan añadir y borrar un elemento por posición, mostrar los elementos por pantalla, etc.


package main;
import figuras.*;

public class Main {
    public static void main(String[] args) {
        Figuras figuras = new Figuras();
        figuras.annade(new Circulo(3.456));
        figuras.annade(new Cuadrado(2.11));
        if(!figuras.annade(new Triangulo(3.12,5.6),7)) {
            System.out.println("Error al borrar");
        }
        figuras.lista();
        figuras.borra(0);
        figuras.borra(33);
        System.out.println("---------------------");
        figuras.lista();
    }
}

Puedes ver todos mis ejercicios de JAVA en este enlace.

lunes, 1 de febrero de 2021

JAVA: Ejercicio sobre Herencia

El enunciado es: Cree una jerarquía de clases que represente el personal de una empresa. Para ello defina una clase abstracta con los atributos y métodos generales de cualquier empleado y varias subclases para distintos tipos de empleados.


Programador.java

package empleados;

public class Programador extends Empleado {
    
    public Programador(String dni) {
        super(dni,20000);
    }
    
    public void programar() {
        System.out.println("Estoy programando");
    }
}

ListaEmpleados.java
 
package empleados;

public class ListaEmpleados {

    private Empleado[] lista;

    public ListaEmpleados() {
        lista = new Empleado[10];
    }

    public boolean add(Empleado e) {
        for (int i=0; i<lista.length; i++) {
            if (lista[i] == null) {
                lista[i] = e;
                return true;
            }
        }
        return false;
    }

    public void remove(int i) {
        if (i < lista.length && i >= 0) {
            lista[i] = null;
        }
    }

    public boolean remove(String dni) {
        for (int i=0; i<lista.length; i++) {
            if (lista[i] != null) {
                if (lista[i].getDNI().compareTo(dni) == 0) {
                    lista[i] = null;
                    return true;
                }
            }
        }
        return false;
    }

    public void listar() {
        for (Empleado elto : lista) {
            if (elto != null) {
                System.out.print(elto.getDNI() + ": ");
                if (elto instanceof Gerente) {
                    System.out.print("gerente (");
                }
                if (elto instanceof Programador) {
                    System.out.print("programador (");
                }
                System.out.println(elto.getSueldo() + ")");
            }
        }
    }
}

Gerente.java

 
package empleados;

public class Gerente extends Empleado {
    
    public Gerente(String dni) {
        super(dni,100000);
    }
    
    public void reunion() {
        System.out.println("Estoy reunido");
    }
}

Empleados.java

 
package empleados;

public class Gerente extends Empleado {
    
    public Gerente(String dni) {
        super(dni,100000);
    }
    
    public void reunion() {
        System.out.println("Estoy reunido");
    }
}

Empleado.java

 
package empleados;

abstract public class Empleado {

    private String DNI;
    private int sueldo;
    
    public Empleado(String dni, int sueldo) {
        DNI = dni;
        this.sueldo = sueldo;
    }

    public String getDNI() {
        return DNI;
    }

    public void setDNI(String DNI) {
        this.DNI = DNI;
    }    

    public int getSueldo() {
        return sueldo;
    }

    public void setSueldo(int sueldo) {
        this.sueldo = sueldo;
    }
    
}

Puedes ver todos mis ejercicios de JAVA en este enlace.