一个逻辑编程问题解决不了,大家帮帮忙
我国有四大淡水湖。A说:洞庭湖最大,洪泽湖最小,潘阳湖第三。
B说:洪泽湖最大,洞庭湖最小,潘阳湖第二,太湖第三。
C说:洪泽湖最小,洞庭湖第三。
D说:潘阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
4个人每个人仅答对了一个,请编程给出4个湖从大到小的顺序。
public class FourLargestFreshwaterLake { public static void main(String[] args) { for (int d = 1; d <= 4; d++) { // "洞庭湖" for (int h = 1; h <= 4; h++) { // "洪泽湖" for (int b = 1; b <= 4; b++) { // "潘阳湖" for (int t = 1; t <= 4; t++) { // "太湖" if (meetAllConditions(d, h, b, t)) { String[] fourLake = new String[5]; fourLake[d] = "洞庭湖"; fourLake[h] = "洪泽湖"; fourLake[b] = "潘阳湖"; fourLake[t] = "太湖"; for (String lake : fourLake) { if (lake != null && lake.length() > 0) { System.out.println(lake); } } } } } } } } private static boolean meetAllConditions(int d, int h, int b, int t) { if (d == h || d == b || d == t || h == b || h == t || b == t) { return false; } if (!meetACondition(d, h, b, t, 0)) { return false; } if (!meetBCondition(d, h, b, t, 0)) { return false; } if (!meetCCondition(d, h, b, t, 0)) { return false; } if (!meetDCondition(d, h, b, t, 0)) { return false; } return true; } private static boolean meetACondition(int d, int h, int b, int t, int meetTimes) { if (d == 1) { meetTimes++; } // 洞庭湖最大 if (h == 4) { meetTimes++; } // 洪泽湖最小 if (b == 3) { meetTimes++; } // 潘阳湖第三 return (meetTimes == 1); // 每个人仅答对了一个 } private static boolean meetBCondition(int d, int h, int b, int t, int meetTimes) { if (h == 1) { meetTimes++; } // 洪泽湖最大 if (d == 4) { meetTimes++; } // 洞庭湖最小 if (b == 2) { meetTimes++; } // 潘阳湖第二 if (t == 3) { meetTimes++; } // 太湖第三 return (meetTimes == 1); // 每个人仅答对了一个 } private static boolean meetCCondition(int d, int h, int b, int t, int meetTimes) { if (d == 3) { meetTimes++; } // 洪泽湖最小 if (h == 4) { meetTimes++; } // 洞庭湖第三 return (meetTimes == 1); // 每个人仅答对了一个 } private static boolean meetDCondition(int d, int h, int b, int t, int meetTimes) { if (b == 1) { meetTimes++; } // 潘阳湖最大 if (t == 4) { meetTimes++; } // 太湖最小 if (h == 2) { meetTimes++; } // 洪泽湖第二 if (d == 3) { meetTimes++; } // 洞庭湖第三 return (meetTimes == 1); // 每个人仅答对了一个 } }