necesito ayuda sobre general un archivo de texto en java
Necesito ayuda urgente porfavor con este proyecto
Se tiene q crear un archivo de texto con una lista de personas con los siguientes datos personales
Nombre, apellido, cedula, edad, sexo,
Tiene q ser máximo de 100 lineas
1. Que lea y cargue los datos desde el archivo de texto
2. Imprima los datos de la lista
3. Lea la cedula introducida por teclado por el usuario y de estar en la lista, imprima todos sus datos por pantalla. En caso de lo contrario imprima un mensaje indicando que la persona no se encuentra en la lista.
4. Imprima la frase “mayor de edad” o menor de edad dependiendo si es mayor o menor de 18 años.
- Inicie sesión o regístrese para enviar comentarios
Como no, aquí está
Como no, aquí está:
Esta parece una buena oportunidad
para explorar Java 8 y ver como se
escribiría en una forma "moderna"
(no necesariamente correcta)
import java.io.*;
import java.util.*;
import static java.lang.Integer.*;
import static java.lang.System.out;
// 1. Que lea y cargue los datos desde el archivo de texto
// 2. Imprima los datos de la lista
// 3. Lea la cedula introducida por teclado por el usuario y de estar en la lista, imprima todos sus datos por pantalla.
// En caso de lo contrario imprima un mensaje indicando que la persona no se encuentra en la lista.
// 4. Imprima la frase “mayor de edad” o menor de edad dependiendo si es mayor o menor de 18 años.
class Data implements Serializable {
public String name, lastName, id, age, gender;
public static void main( String ... args ) throws IOException , ClassNotFoundException {
List<Data> append = null;
try ( ObjectInputStream ois = new ObjectInputStream(new FileInputStream("file"))) {
// 1.
List<Data> data = (List<Data>) ois.readObject();
append = data;
// 2.
out.println("Data: " + data);
// 3.
Optional<Data> od = data.stream()
.filter( e -> e.id.equals( args[0] ))
.findFirst();
out.println( od.isPresent() ? "Encontrado: "+ od.get() : "La persona no se encuentra en la lista" );
//4.
out.print(od.isPresent() && parseInt(od.get().age) > 18
? "mayor de edad\n"
: od.isPresent() && parseInt(od.get().age) <= 18
? "menor de edad\n"
: "");
} catch ( Exception e) {}
// 5. bonus.. save data
List<Data> l = append != null ? append : new ArrayList<Data>();
readData().ifPresent( d -> {
try ( ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("file")) ) {
l.add(d);
oos.writeObject( l );
} catch( Exception e ){}
});
}
private final static Optional<Data> readData() {
Data d = new Data();
System.getProperties().forEach( (k, v) -> {
try {
Data.class.getField((String)k).set(d,v);
} catch(Exception e){}
});
return d.name != null ? Optional.of(d) : Optional.empty();
}
public String toString() {
return String.format("%s, %s, %s, %s, %s%n", name, lastName, id, age, gender );
}
}
Salida
oreyes:datos $ ls
Data.java data
oreyes:datos $ java -Dname=Leo -DlastName=Perez -Did=1 -Dage=17 -Dgender=male data.Data
oreyes:datos $ java -Dname=Leo -DlastName=Lopez -Did=2 -Dage=19 -Dgender=male data.Data
oreyes:datos $ java data.Data 1
Data: [Leo, Perez, 1, 17, male
, Leo, Lopez, 2, 19, male
]
Encontrado: Leo, Perez, 1, 17, male
menor de edad
oreyes:datos $ java data.Data 2
Data: [Leo, Perez, 1, 17, male
, Leo, Lopez, 2, 19, male
]
Encontrado: Leo, Lopez, 2, 19, male
mayor de edad
oreyes:datos $ java data.Data 3
Data: [Leo, Perez, 1, 17, male
, Leo, Lopez, 2, 19, male
]
La persona no se encuentra en la lista
gracias
lo voy a correr pense q no me habian respondido por eso la demora gracias mil gracias cualq cosa aviso