Java - necesito ayuda urgente y si se puede una explicación pero la prioridad es alguno de estos ejercicio

 
Vista:
sin imagen de perfil

necesito ayuda urgente y si se puede una explicación pero la prioridad es alguno de estos ejercicio

Publicado por ernesto (3 intervenciones) el 09/11/2021 18:40:23
1. Realizar una función que permita cargar un listado de alumnos a partir de un archivo de texto plano llamado “Estudiantes.in”, con los datos pertenecientes a una clase “Estudiante”, con atributos de Nombre, apellido, cédula, promedio de notas, edad. Donde una vez cargados todos los alumnos en la lista se imprima el promedio de notas general del listado.
2. Realizar una función que permita cargar una lista circular doblemente
enlazada donde se pueda recorrer la misma aleatoriamente en cualquier dirección y se muestre un elemento aleatorio de la misma.
3. Crear una función que permita determinar el valor mas alto, el mas bajo y la mediana en una lista doblemente enlazada donde los nodos nada mas posean sus enlaces y un atributo de “valor” que será el parámetro de búsqueda.
4. Crear una función que permite eliminar elementos de una lista de personas, usando como variable de búsqueda la cédula de la misma, esta clase persona poseerá atributos de Nombre, Apellido y cédula (Mismos datos pueden cargarse desde un archivo como en el ejercicio 1, o cargarlos por la consola, queda a su criterio). Donde una vez cargadas las personas a esa lista se solicite la cédula a eliminar, ya ingresado este valor, la función deberá recorrer la lista de inicio a fin y eliminar todos los elementos con esa misma cédula.
Si pueden aunque sea ayudarme con uno lo agradecería de corazón.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

necesito ayuda urgente y si se puede una explicación pero la prioridad es alguno de estos ejercicio

Publicado por Kabuto (1381 intervenciones) el 09/11/2021 20:07:17
Empieza tú mismo con el primer ejercicio, hazlo paso a paso.
Primero escribe una clase Estudiante con los atributos que se indican:
1
con atributos de Nombre, apellido, cédula, promedio de notas, edad.
Cuanto tengas eso, compártelo por aquí y nos pondremos con el siguiente paso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

necesito ayuda urgente y si se puede una explicación pero la prioridad es alguno de estos ejercicio

Publicado por ernesto (3 intervenciones) el 09/11/2021 21:39:35
1
2
3
4
5
6
7
8
9
10
package nuevapaquete;
 
 
public class Estudiante {
 String nombre;
 String apellido;
 String cedula;
 double promediodenotas;
 int edad;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

necesito ayuda urgente y si se puede una explicación pero la prioridad es alguno de estos ejercicio

Publicado por Kabuto (1381 intervenciones) el 10/11/2021 01:06:00
Bueno, la clase te ha quedado algo incompleta.

Los atributos, salvo que tengamos un motivo de peso, siempre los vamos a declarar como private

Siempre viene bien dotar a las clases de uno o más constructores. En este caso podemos crear uno que reciba todos los valores para los atributos.

Y por supuesto, los métodos getter y setter. Que luego puede que no los lleguemos a usar, pero en estos ejercicios es buena costumbre ponerlos siempre.

Además le pondremos el método toString(), para poder mostrar los datos en pantalla de forma rápida.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class Estudiante {
 
	private String nombre;
	private String apellido;
	private String cedula;
	private double promediodenotas;
	private int edad;
 
	public Estudiante(String nombre, String apellido, String cedula, double promediodenotas, int edad) {
		this.nombre = nombre;
		this.apellido = apellido;
		this.cedula = cedula;
		this.promediodenotas = promediodenotas;
		this.edad = edad;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getApellido() {
		return apellido;
	}
	public void setApellido(String apellido) {
		this.apellido = apellido;
	}
	public String getCedula() {
		return cedula;
	}
	public void setCedula(String cedula) {
		this.cedula = cedula;
	}
	public double getPromediodenotas() {
		return promediodenotas;
	}
	public void setPromediodenotas(double promediodenotas) {
		this.promediodenotas = promediodenotas;
	}
	public int getEdad() {
		return edad;
	}
	public void setEdad(int edad) {
		this.edad = edad;
	}
 
	@Override
	public String toString() {
		return String.format("%s, %s, %s, %.2f, %d", nombre,
				apellido, cedula, promediodenotas, edad);
	}
 
}

Revisa el código que he puesto, si algo no lo entiendes, pregúntalo.

Bien, se nos dice que en este ejercicio los datos no se van a introducir por teclado, si no que se van a leer desde un fichero de texto.
El siguiente paso es decidir qué formato va a tener ese fichero de texto, para luego poder saber como hemos de recuperar esos datos.

Lo más sencillo es hacer un archivo de texto en el que cada línea represente a un estudiante y contenga los valores de cada atributo.
Estos valores hay que separarlos de alguna forma para distinguir unos de otros, podemos usar por ejemplo un ;
Este podría ser el texto de nuestro fichero

1
2
3
4
5
6
7
8
9
10
Luis;Segura;4523912F;6.25;16
Sara;Pelaez;31906291H;7.5;17
Ramon;Pellicer;49017892K;4;15
Laura;Juan;40912055R;8.75;16
Jorge;Morales;44109244Y;5;17
Susana;Alamo;46901212G;8;17
Diego;Garcia;44038211K;3;18
Elizabeth;Linde;43202010T;9.25;15
Eva;Llanes;43901067U;6.5;16
Sergio;Lopez;42087611M;5;16


Una vez hemos creado este fichero de texto, con el Bloc de Notas o la aplicación que tengamos disponible en nuestro sistema operativo, ahora en el programa vamos a crear una nueva clase con el método main().

Aquí será donde vamos a leer los datos del fichero y crear objetos Estudiante a partir de ellos.
Por lo tanto, necesitaremos alguna estructura para coleccionar estos objetos, por ejemplo un ArrayList.

Podemos crear un método que se encargue específicamente de leer los datos del fichero, construir Estudiantes y guardarlos en el ArrayList.
Para leer datos usaremos la clase BufferedReader, quien a su vez necesita un objeto FileReader, a quien le indicaremos el nombre del archivo que ha de leer.

Leeremos línea a línea, separaremos los datos en un array de String con el método split() diciéndole que busque el ; que separa cada dato.
Luego de ese array, usaremos cada dato para crear los valores de los atributos (convirtiendo a numéricos el promedio y la edad), construiremos un Estudiante con esos datos, lo guardamos en el ArrayList y pasamos a la siguiente línea.

Si todo ha ido bien, el método retornará true para informar de que tenemos los datos, de lo contrario, retornará false.

En el programa principal, si este método ha retornado true, entonces mostraremos los datos que hemos leído y calcularemos el promedio de notas de entre todos los Estudiantes, que es lo que se nos pide.
El promedio se calcula sumando todas las notas, y luego dividiendo por la cantidad de estudiantes (esto nos lo dice el tamaño del ArrayList)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
 
public class LeerEstudiantes {
 
	private static ArrayList<Estudiante> estudiantes;
 
	public static void main(String[] args) {
		estudiantes = new ArrayList<Estudiante>();
		//Si hemos podido cargar datos con éxito...
		if (cargarDatos()) {
			//Mostramos datos leídos, y de paso, acumulamos el valor de sus notas
			double sumaNotas = 0;
			System.out.println("Listado de Estudiantes\n");
			for (Estudiante std: estudiantes) {
				System.out.println("> " + std);
				sumaNotas += std.getPromediodenotas();
			}
 
			//Mostramos el promedio total
			System.out.println("\nPromedio notas : " + (sumaNotas / estudiantes.size()));
		}
		else
			System.out.println("\nPrograma no puede continuar sin datos...");
 
	}
 
	private static boolean cargarDatos() {
 
		try {
			BufferedReader lector = new BufferedReader(new FileReader("Estudiantes.txt"));
			//Leemos la primera línea
			String linea = lector.readLine();
			//Mientras exista una línea para leer..
			while(linea != null) {
				//Separamos los datos de la línea en un array de String
				String[] datos = linea.split(";");
				//Cada dato del array es el valor de un atributo de Estudiante
				String nombre = datos[0];
				String apellido = datos[1];
				String cedula = datos[2];
				//Los siguientes atributos son numéricos, hay que convertirlos
				double promedio = Double.parseDouble(datos[3]);
				int edad = Integer.parseInt(datos[4]);
				//Datos obtenidos, podemos construir nuevo Estudiante y guardar en ArrayList
				estudiantes.add(new Estudiante(nombre, apellido, cedula, promedio, edad));
				//Pasamos a la siguiente linea
				linea = lector.readLine();
			}
			//Si bucle while finaliza con éxito, es que hemos recuperado datos
			lector.close();
			return true;
		} catch (FileNotFoundException e) {
			System.out.println("No se encuentra fichero de Estudiantes");
			return false;
		} catch (IOException e) {
			System.out.println("Error accediendo al fichero de Estudiantes");
			return false;
		}
	}
}


Si lo probamos, en pantalla veremos que todo parece funcionar:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Listado de Estudiantes
 
> Luis, Segura, 4523912F, 6,25, 16
> Sara, Pelaez, 31906291H, 7,50, 17
> Ramon, Pellicer, 49017892K, 4,00, 15
> Laura, Juan, 40912055R, 8,75, 16
> Jorge, Morales, 44109244Y, 5,00, 17
> Susana, Alamo, 46901212G, 8,00, 17
> Diego, Garcia, 44038211K, 3,00, 18
> Elizabeth, Linde, 43202010T, 9,25, 15
> Eva, Llanes, 43901067U, 6,50, 16
> Sergio, Lopez, 42087611M, 5,00, 16
 
Promedio notas : 6.325


De nuevo, revisa bién el código, asegúrate de que comprendes cada instrucción. Y si no, pregunta lo que sea.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

necesito ayuda urgente y si se puede una explicación pero la prioridad es alguno de estos ejercicio

Publicado por ernesto (3 intervenciones) el 09/11/2021 21:47:36
gracias por al ayuda amigo por eso de las clases online no le entiendo al profesor y como nunca habia visto java estoy bastante perdido no sabes de la que me salvas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar