如何在共享共同值的多个二维数组之间进行迭代?

时间:2014-02-11 02:18:00

标签: java arrays loops search for-loop

如何在多个二维数组之间进行迭代。例如,我想找到所有居住在Cobb的学生,他们出生于1970年之后,在Evan Duggan教授的课程中获得了C或更高的成绩。这两个表共享n个共同的用户ID,例如“0033”

 public class JavaApplication2 {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here
  String [ ][ ] students = {
                        { "0033", "Sandra", "Smith", "Cobb", "1989" },
                        { "1144", "Bo", "Harrison", "DeKalb","1987" },
                        { "2255", "Sam", "Mitchell", "Cobb", "1969"},
                        { "3366", "Sabrina", "Jones", "Cobb", "1979"},
                        { "4477", "Harry", "Johnson", "Cobb", "1982"},
                        { "5588", "Lisa", "Simpson", "Paulding", "1982"}
                        };

  String[ ][ ] grades = {
                        { "5588", "201405", "CSE", "1301J", "A", "Ian Salts" },
                        { "5588", "201405", "COMM", "2400","B", "Evan Duggan" },
                        { "5588", "201408", "CSE", "1302J", "A", "Ian Salts"},
                        { "0033", "201405", "CSE", "1301J", "C", "Ian Salts"},
                        { "0033", "201405", "COMM", "2400", "A", "Evan Duggan"}
                        };




       for (int i = 0; i < students.length; i++)
       {
              System.out.print(students[ i ] [ 0 ] + ": ");
              for (int j = 1; j < students[ i ].length; j++)
              {
                         System.out.print(students[ i ][ j ] + " ");
              }
             System.out.println( );
       }
         System.out.println( );
        for (int i = 0; i < grades.length; i++)
       {
              System.out.print(grades[ i ] [ 0 ] + ": ");
              for (int j = 1; j < grades[ i ].length; j++)
              {
                         System.out.print(grades[ i ][ j ] + " ");
              }
             System.out.println( );

       }

        for ( int i=0; i<grades.length; i++) {
            for(int j=0; j< grades[i].length; j++) {
    if ( grades[i][j].equals("A") && grades [i][5].equals("Evan Duggan")) {
        System.out.println("The student ID is "+ grades[i][0]);

    }
    else if ( grades[i][j].equals("B") && grades [i][5].equals("Evan Duggan")){
        System.out.println("The student ID is "+ grades[i][0]);
       }
    else if ( grades[i][j].equals("C") && grades [i][5].equals("Evan Duggan")){
        System.out.println("The student ID is "+ grades[i][0]);
    }

}


}

 }
 }       

1 个答案:

答案 0 :(得分:1)

假设你使用二维数组,你可以通过分组和匹配与每个数组相关的标准来解决这个问题:

for (String[] student: students) {
   // First set of criteria relevant to students array
   if (student[3].equals("Cobb") && Integer.parseInt(student[4]) > 1970) {

       for (String[] grade: grades) {
          // Match on student id as well as criteria relevant to grades array
          if (grade[0].equals(student[0]) && grade[5].equals("Evan Duggan"))  {

             // I separate the conditionals here to keep it readable/tidy
             // Consider using a Enum type or comparator etc.
             if (grade[4].equals("C") || grade[4].equals("B") || grade[4].equals("A")) {
                // Code for handling matching student
             }
          }
       }
   }
}