Java - Crear un array de doble dimensión

 
Vista:
sin imagen de perfil

Crear un array de doble dimensión

Publicado por Luis Ronald (1 intervención) el 04/01/2017 19:39:58
Hola buenas mi cuestión es la siguiente: Quiero crear un array de doble dimensión en y clasificarlos a su vez, es decir, que las asignaturas dentro de el estén asignatura_1 asignatura_2 asignatura_3 etc. En el cual en cada asignatura están apuntados 10 alumnos por decir un numero,

Quiero una tabla mas o menos así (los números delante son las posiciones del array)

0 asignatura_1 alu1 alu2 alu3


1 asignatura_2 alu1 alu2 alu3


2 asignatura_3 alu1 alu2 alu3

Entonces yo he creado una clase asignatura y una clase alumno, los alumnos se dan de alta en los módulos y hasta ahí. Mi objetivo es que un array me muestre la información de los módulos y los alumnos pertenecientes a ella, asignatura_1 tiene estos alumnos registrados.

No se si puede o a lo mejor me estoy liando demasiado y es mas fácil de lo que pienso. Gracias
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
sin imagen de perfil
Val: 144
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Crear un array de doble dimensión

Publicado por Thanatos (97 intervenciones) el 05/01/2017 00:39:33
De esta manera sólo necesitarás un array unidimensional:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Alumno {
    private String nombre;
    private int edad;
 
    public Alumno(String nombre, int edad) {
        this.nombre = nombre;
        this.edad = edad;
    }
 
    public String getNombre() {
        return nombre;
    }
 
    public int getEdad() {
        return edad;
    }
 
    @Override
    public String toString() {
        return String.format("Nombre = %s\nEdad = %d", nombre, edad);
    }
}

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
import java.util.List;
import java.util.ArrayList;
 
public class Asignatura {
    private String nombre;
    private String profesor;
    private List<Alumno> alumnos;
 
    public Asignatura(String nombre, String profesor) {
        this.nombre = nombre;
        this.profesor = profesor;
        alumnos = new ArrayList<Alumno>();
    }
 
    public String getNombre() {
        return nombre;
    }
 
    public String getProfesor() {
        return profesor;
    }
 
    public List<Alumno> getAlumnos() {
        return alumnos;
    }
 
    public void registrarAlumno(String nombre, int edad) {
        Alumno alumno = new Alumno(nombre, edad);
        alumnos.add(alumno);
    }
}

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
class Principal {
 
    public static void main(String[] args) {
        int nAsignaturas = 3;
        Asignatura[] asignaturas = new Asignatura[nAsignaturas];
 
        asignaturas[0] = new Asignatura("Matematicas", "Prof. Rodriguez");
        asignaturas[0].registrarAlumno("Antonio", 15);
        asignaturas[0].registrarAlumno("Alicia", 16);
        asignaturas[0].registrarAlumno("Jose", 15);
 
        asignaturas[1] = new Asignatura("Quimica", "Prof. Martinez");
        asignaturas[1].registrarAlumno("Alberto", 17);
        asignaturas[1].registrarAlumno("Daniel", 16);
        asignaturas[1].registrarAlumno("Roberto", 16);
 
        asignaturas[2] = new Asignatura("Programacion", "Prof. Bill Gates");
        asignaturas[2].registrarAlumno("Marcelo", 18);
        asignaturas[2].registrarAlumno("Jazmin", 17);
        asignaturas[2].registrarAlumno("Daniela", 16);
 
        mostrarTabla(asignaturas);
    }
 
    private static void mostrarTabla(Asignatura[] asignaturas) {
        for (Asignatura asignatura : asignaturas) {
            System.out.print(
                String.format("%-12s%-3s", asignatura.getNombre(), ":")
            );
 
            for (Alumno alumno : asignatura.getAlumnos()) {
                System.out.print(
                    String.format("%s  ", alumno.getNombre())
                );
            }
            System.out.println();
        }
    }
 
}

Llené el array asignaturas manualmente sólo a manera de ejemplo, pero lo más conveniente sería crear otro método que se encarge de hacerlo, para evitar la repetición de código.

No estoy seguro si entendí bien el formato que quieres para la salida de la tabla. Si es el mismo que muestra el programa que hice, seguramente te dará problemas cuando el número de alumnos registrados aumente, porque las líneas serán demasiado largas.
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