学习-Java循环之嵌套循环之淡水湖排名
任务描述
本关任务:我国有 4 大淡水湖,分别是洞庭湖,洪泽湖,鄱阳湖和太湖。
A 说:洞庭湖最大,洪泽湖最小,鄱阳湖第三;
B 说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三;
C 说:洪泽湖最小,洞庭湖第三;
D 说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
请根据每人说的话求出 4 大湖的正确排名。
代码及注释
/*
任务:我国有 4 大淡水湖,分别是洞庭湖,洪泽湖,鄱阳湖和太湖。
A 说:洞庭湖最大,洪泽湖最小,鄱阳湖第三;
B 说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三;
C 说:洪泽湖最小,洞庭湖第三;
D 说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
请输出4大湖的正确排名,输出样式:洞庭湖排名:n 
A说的话可用如下表达式体现:
int a1 = (dongting == 1) ? 1 : 0;//洞庭湖最大(1),是的话赋值为1,否则赋值为0
int a2 = (hongze == 4) ? 1 : 0;//洪泽湖最小(4),是的话赋值为1,否则赋值为0
int a3 = (poyang == 3) ? 1 : 0;
a=a1+a2+a3;//A说的话
*/
public class LakeTest {
    public static void main(String[] args) {
        int a, b, c, d;
        int dongting, hongze, poyang, tai;
       for (dongting = 1;dongting<=4;dongting++){
       //让洞庭湖依次是排名第一,第二,第三,第四
           for (hongze = 1;hongze<=4;hongze++){
           //让洪泽湖依次是排名第一,第二,第三,第四
               if (dongting == hongze){
                   continue;
               }
               //当洪泽湖排名和洞庭湖一样时,不执行后面的语句,目的是避免排名相同的情况出现
               for (poyang = 1;poyang<=4;poyang++){
                   if (dongting == poyang || hongze == poyang){
                       continue;
                   }
                 //当鄱阳湖和洪泽湖排名或洞庭湖一样时,不执行后面的语句,目的是避免排名相同的情况出现
                   tai = 10 - dongting - hongze - poyang;//排名1+2+3+4=10,所以太湖的排名可以是10-(其他三个湖排名之和)
                   a = (dongting==1?1:0) + (hongze==4?1:0) + (poyang==3?1:0);
                   b = (hongze==1?1:0) + (dongting==4?1:0) + (poyang==2?1:0) + (tai==3?1:0);
                   c = (hongze==4?1:0) + (dongting==3?1:0);
                   d = (poyang==1?1:0) + (tai==4?1:0) + (hongze==2?1:0) + (dongting==3?1:0);
                   if ((a==1) && (b==1) && (c==1) && (d==1)){
                       System.out.println("洞庭湖排名:"+dongting);
                       System.out.println("洪泽湖排名:"+hongze);
                       System.out.println("鄱阳湖排名:"+poyang);
                       System.out.println("太湖排名:"+tai);
                   }
                   //因为4人说的话,是存在两两矛盾的,所以我们只需要每人的话中有一个是真的,输出满足条件的排名即可
               }
           }
       }
    }
}

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号