Arrays 我的方法没有将名称放入数组并正确删除它们

Arrays 我的方法没有将名称放入数组并正确删除它们,arrays,stable-marriage,Arrays,Stable Marriage,我一直在研究我所在的一个类的稳定婚姻问题,但我无法让它正确地实现Gale-Shapely算法。出现提示时输出: for (int q = 0; q < numMen; q++ ) System.out.println(couples[q].toString()); 是 布莱恩·帕特里夏 乔治·南希 约翰·苏珊 罗伯特南希 史蒂文·乔伊斯 只是他们都在不同的线路上。布莱恩·帕特里夏·乔治·乔伊斯·约翰·苏珊·罗伯特·南希·斯蒂芬·安妮是最合适的组合。问题是这不会让南希成为乔治的一对。同样

我一直在研究我所在的一个类的稳定婚姻问题,但我无法让它正确地实现Gale-Shapely算法。出现提示时输出:

for (int q = 0; q < numMen; q++ ) 
System.out.println(couples[q].toString());
是 布莱恩·帕特里夏 乔治·南希 约翰·苏珊 罗伯特南希 史蒂文·乔伊斯 只是他们都在不同的线路上。布莱恩·帕特里夏·乔治·乔伊斯·约翰·苏珊·罗伯特·南希·斯蒂芬·安妮是最合适的组合。问题是这不会让南希成为乔治的一对。同样,对于背景男性[][]是男性偏好矩阵,其格式为:男性[i][0]是0
public static void SolveMenMarriages() {
    int i, k;
    String m, w, fiance;

    i = 0;
    fiance = null;
    while (i < numMen) {
        k = 1;

        m = men[i][0];
        w = men[i][k];

        if (isProposedTo(w))
            fiance = findFiance(w);

        if (!isProposedTo(w)) {
            couples[i] = new couple(m, w);
            i++;
        } else if (checkPreferenceWoman(fiance, m, w).equals(m)){
            couples[i] = new couple(m, w);
            removeFiance(fiance);
            i = fianceIndex(fiance); 
        } else {
            k++;
        }

        if (i == (numMen - 1)) {
            for(int v = 0; v < numMen; v++) {
                if (couples[v].woman == null)
                    i = 0;
                else
                    break;
            }
        }

    }
}
public static String checkPreferenceWoman(String M1, String M2, String w) {
    int c;

    c = 0;
    while (c < numWomen) {
        if (women[c][0].equals(w)) {
            for (int d = 1; d < (numMen + 1); d++) {
                if (women[c][d].equals(M2)) {
                    return M2;
                } 
            }
        }
        c++;
    }
    return M1;
}
}

您是否尝试过使用调试器单步执行代码?问题在于算法本身。我已经看了一百遍了,在我的脑海里,这应该行得通。我希望一双新的眼睛能更清楚地看到这个问题,哈哈。