Java - Problema con la creación de un objeto dentro de un for

 
Vista:
Imágen de perfil de jose
Val: 64
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con la creación de un objeto dentro de un for

Publicado por jose (73 intervenciones) el 01/12/2021 16:55:22
Hola a todos,

Me estoy volviendo lo loco con un código.

El programa tiene tres clases

UsoColegio.java que contiene el main con :

1
2
3
4
5
6
7
8
9
Colegio SanJavier=new Colegio("San Javier", 200);
		Colegio Cervantes=new Colegio("Cervantes", 300);
 
 
		SanJavier.nuevoAlumno("Juan",8.5);
		SanJavier.nuevoAlumno("Sara",9);
                Cervantes.nuevoAlumno("Ana",5);
		Cervantes.nuevoAlumno("Antonio",7);
		Cervantes.nuevoAlumno("Maria",3);

Alumno.java que contiene

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
public class Alumno {
 
 
	public Alumno(String nombreAlumno, double notaMedia) {
 
		this.nombreAlumno = nombreAlumno;
		this.notaMedia = notaMedia;
		numAlumno = numAlumnoSiguiente;
		numAlumnoSiguiente++;
 
	}
 
	public String getNombreAlumno() {
		return nombreAlumno;
	}
 
	public double getNotaMedia() {
 
		return notaMedia;
	}
 
	public int getNumAlumno() {
		return numAlumno;
	}
 
 
 
	private String nombreAlumno;
	private double notaMedia;
	private int numAlumno;
	private static int numAlumnoSiguiente = 1;
}

y la clase colegio.java que contiene

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
public class Colegio {
	Alumno[] Alumnos = new Alumno[0];
 
	public Colegio (String nombreColegio, int numAlumnos) {
		this.nombreColegio = nombreColegio;
		this.numAlumnos = numAlumnos;
		//Damos longitud al array
		Alumnos = new Alumno[numAlumnos];
	}
	//Hecho - comprobar
	public void nuevoAlumno(String nombreAlumno,double notaMedia) {
 
 
		for (int i=0;i < Alumnos.length;i++) {
 
			if (Alumnos[i]==null) {
				Alumnos[i] = new Alumno(nombreAlumno,notaMedia);
			}
			System.out.println("Añadido " + nombreAlumno + " nota " + notaMedia +
					"Al colegio : " + nombreColegio);
			break;
		}
 
 
 
	}
 
	public void getTodosAlumnos() {
		for (int i = 0;i<Alumnos.length;i++) {
			if(Alumnos[i]!=null) {
				//String nombreAlumno = Alumno[i].getNombreAlumno();
 
				System.out.print("Nombre alumno : " + Alumnos[i].getNombreAlumno() +
						"\n Colegio : " + nombreColegio +
						"\n Nº Alumno : " + Alumnos[i].getNumAlumno() +
						"\n Nota media : " + Alumnos[i].getNotaMedia());
			}
		}
 
	}
	private String nombreColegio;
	private int numAlumnos;
 
}


Al crear los alumnos desde el main envío al método nuevo alumno de la clase colegio los datos para la creación del objeto alumno

Pero al llegar aquí me crea solo un objeto,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void nuevoAlumno(String nombreAlumno,double notaMedia) {
 
 
		for (int i=0;i < Alumnos.length;i++) {
 
			if (Alumnos[i]==null) {
				Alumnos[i] = new Alumno(nombreAlumno,notaMedia);
			}
			System.out.println("Añadido " + nombreAlumno + " nota " + notaMedia +
					"Al colegio : " + nombreColegio);
			break;
		}
 
 
	}

Añado un screenshot del IDE con el valor Alumnos al debugear

A ver si alguien me puede decir que pasa
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 jose
Val: 64
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con la creación de un objeto dentro de un for

Publicado por jose (73 intervenciones) el 01/12/2021 18:46:30
Solucionado era un break del método nuevoAlumno()

lo he dejado así.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
	//Hecho - comprobar
	public void nuevoAlumno(String nombreAlumno,double notaMedia) {
 
 
		for (int i=0;i < Alumnos.length;i++) {
 
			if (Alumnos[i]==null) {
				Alumnos[i] = new Alumno(nombreAlumno,notaMedia);
				break;
			}
			System.out.println("Añadido " + nombreAlumno + " nota " + notaMedia +
					" al colegio : " + nombreColegio);
 
		}
 
	}

Saludos,
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

Problema con la creación de un objeto dentro de un for

Publicado por Tom (1831 intervenciones) el 01/12/2021 19:02:46
Quizás deberías dejarlo así:
1
2
3
4
5
6
7
8
9
10
for(int i = 0; i < Alumnos.length; i++) {
			if(Alumnos[i] == null) {
				Alumnos[i] = new Alumno(nombreAlumno, notaMedia);
 
				System.out.println("Añadido " + nombreAlumno + " nota " + notaMedia
						+ "Al colegio : " + nombreColegio);
 
				break;
			}
		}
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 jose
Val: 64
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con la creación de un objeto dentro de un for

Publicado por jose (73 intervenciones) el 01/12/2021 19:27:00
Hola Tom,

También es verdad. Aunque el otro funcionaba lo veo más ordenado así.

Muchas gracias Tom.
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