数组排序多维数组以匹配第二个数组

时间:2013-11-28 15:56:37

标签: java arrays sorting multidimensional-array

我有一个带有学生姓名的单个demenational数组和一个带有学生标记的2D数组,我可以对这些名称进行排序,但我无法得到匹配的标记(因为它们必须保持相同的顺序)。这是我尝试过的代码:

static String[] studentNamesArray = new String[10];
static int[][] studentMarksArray = new int[10][3];

  static void sortAlphabetical() { 
    String tempName;
    int intSwap;
    boolean flag = false;
    while (flag==false) {
      flag = true;
      for (int i = 0; i < 9; i++) {
        if (studentNamesArray[i].compareTo(studentNamesArray[i + 1])>0) {
          tempName = studentNamesArray[i];
          studentNamesArray[i] = studentNamesArray[i + 1];
          studentNamesArray[i + 1] = tempName;

          for(int y=0;y<2;y++){
          intSwap = studentMarksArray[i][0];
          studentMarksArray[i][y] = studentMarksArray[i+1][y+1];
          studentMarksArray[i+1][y+1] = intSwap;
          }
          flag = false;
        }
      }
    }
  }

1 个答案:

答案 0 :(得分:3)

您只需像对名称一样交换标记数组:

static void sortAlphabetical() { 
        String tempName;
        int [] intSwap; //<-- note I changed this as an int[] array
        boolean flag = false;
        while (flag==false) {
          flag = true;
          for (int i = 0; i < studentNamesArray.length-1; i++) { //<-- note I changed this to length - 1 to avoid IndexOutOfBoundsException
            if (studentNamesArray[i].compareTo(studentNamesArray[i + 1])>0) {
              tempName = studentNamesArray[i];
              studentNamesArray[i] = studentNamesArray[i + 1];
              studentNamesArray[i + 1] = tempName;

              intSwap = studentMarksArray[i];
              studentMarksArray[i] = studentMarksArray[i+1];
              studentMarksArray[i+1]= intSwap;
              flag = false;
            }
          }
        }
      }

    static String[] studentNamesArray = new String[3];
    static int[][] studentMarksArray = new int[3][3];

    public static void main (String[] args) throws java.lang.Exception {
        studentNamesArray[0] = "Mark";
        studentNamesArray[1] = "Anna";
        studentNamesArray[2] = "Arnold";

        studentMarksArray[0] = new int[]{1,2,3};
        studentMarksArray[1] = new int[]{4,5,6};
        studentMarksArray[2] = new int[]{0,0,0};

        sortAlphabetical();
        System.out.println(Arrays.toString(studentNamesArray));
        System.out.println(Arrays.deepToString(studentMarksArray));

    }

输出:

[Anna, Arnold, Mark]
[[4, 5, 6], [0, 0, 0], [1, 2, 3]]