学习-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人说的话,是存在两两矛盾的,所以我们只需要每人的话中有一个是真的,输出满足条件的排名即可
}
}
}
}
}