Supongamos que disponemos de un fichero binario que contiene una secuencia de registros con la siguiente estructura:
- Altura. (float)
- Edad. (int)
- Repetidor. (boolean)
EJERCICIOS:
- Haz una aplicación para generar un fichero con estas características de contenido aleatorio.
- Haz otra que lo lea y calcule la edad media de los alumnos repetidores.
- Y otra más que muestre el contenido del fichero correctamente tabulado para facilitar su legibilidad.
GENERACIÓN DEL FICHERO CON CONTENIDO ALEATORIO
public class Ejercicio2_escribir {
public static void main (String [] args) throws IOException {
FileOutputStream fos = new FileOutputStream("registro2");
DataOutputStream dos = new DataOutputStream(fos);
int numRegistros = (int) (Math.random()*100+1);
int i = 0, edad;
double aux;
float altura;
boolean repetidor;
while (i < numRegistros) {
altura=(float) (Math.random()*2);
altura=(int) (altura*100);
altura=(float) (altura/100);
dos.writeFloat(altura);
edad=(int) (Math.random()*100+1);
dos.writeInt(edad);
aux=Math.random();
if (aux < 0.5)
repetidor=true;
else
repetidor=false;
dos.writeBoolean(repetidor);
i++;
}
dos.close();
fos.close();
}
}
LEER FICHERO Y CALCULAR EDAD MEDIA DE REPETIDORES
public class Ejercicio2_media {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("registro2");
DataInputStream dis = new DataInputStream(fis);
int suma=0, aux, contador = 0;
float media;
try {
while (true) {
dis.readFloat();
aux=dis.readInt();
if (dis.readBoolean()) {
suma+=aux;
contador++;
}
}
}
catch (EOFException e) {
}
fis.close();
dis.close();
if (contador==0) {
System.out.println("No hay repetidores.");
}
else {
media = (float) suma/contador;
System.out.println("La edad media de los repetidores es: " +media+ " años.");
}
}
}
MOSTRAR EL CONTENIDO DEL FICHERO
public class Ejercicio2_mostrar {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("registro2");
DataInputStream dis = new DataInputStream(fis);
System.out.printf("ALTURA\tEDAD\tREPETIDOR");
System.out.println();
try {
while (true) {
System.out.printf("%.2f\t%2d\t%b", dis.readFloat(), dis.readInt(), dis.readBoolean());
System.out.println();
}
}
catch (EOFException e) {
}
fis.close();
dis.close();
}
}
No hay comentarios:
Publicar un comentario