while usar mejorado loop iterar for español ejemplos como arreglo java foreach

usar - Iteración sobre dos matrices utilizando simultáneamente para cada ciclo en Java



iterar un arreglo (3)

Los nombres de los estudiantes (String []) y las marcas correspondientes (int []) se almacenan en diferentes matrices.

¿Cómo puedo iterar sobre ambas matrices usando para cada ciclo en Java?

void list() { for(String s:studentNames) { System.out.println(s); //I want to print from marks[] alongside. } }

Una forma trivial podría ser usar la variable índice en el mismo ciclo. ¿Hay una buena manera de hacerlo?


El problema subyacente es que debes unir ambas matrices e iterar en una sola matriz.

Aquí hay una demostración MUY simplista: debería usar getters y setters y también debería usar una List lugar de una matriz, pero esto demuestra el punto:

class Student { String name; int mark; } Student[] students = new Student[10]; for (Student s : students) { ... }


Si ambos tienen el mismo tamaño, escribiría:

for(int i = 0; i<marks.length; i++) { String names= studentNames[i] int mark = marks[i]; }


Tienes que hacerlo usando el ciclo for normal con un índice, como este:

if (marks.length != studentNames.length) { ... // Something is wrong! } // This assumes that studentNames and marks have identical lengths for (int i = 0 ; i != marks.length ; i++) { System.out.println(studentNames[i]); System.out.println(marks[i]); }

Un mejor enfoque sería usar una clase para almacenar a un estudiante junto con sus marcas, como esta:

class StudentMark { private String name; private int mark; public StudentMark(String n, int m) {name=n; mark=m; } public String getName() {return name;} public int getMark() {return mark;} } for (StudentMark sm : arrayOfStudentsAndTheirMarks) { System.out.println(sm.getName()); System.out.println(sm.getMark()); }