import java.util.ArrayList;
import java.util.List;
/*
* 有两个村,张村和李村
* 张村的人星期一三五说谎
* 李村的人星期二四六说谎
* 一人问,今天周几?结果两个存的人都会打"前天是我说谎的日子".
*/
public class Test10 {
public static void main(String[] args) {
// 张村说谎日子
List<Integer> zhang = new ArrayList<Integer>();
zhang.add(1);
zhang.add(3);
zhang.add(5);
// 李村说谎的日子
List<Integer> li = new ArrayList<Integer>();
li.add(2);
li.add(4);
li.add(6);
// 张村今天是否是说谎的日子
boolean lieTodayZhang = false;
// 李村今天是否是说谎的日子
boolean lieTodayLi = false;
// 张村前天是否是说谎的日子
boolean lieAnteayerZhang = false;
// 李村前天是否是说谎的日子
boolean lieAnteayerLi = false;
// 定义一周的for循环
for (int today = 1; today < 8; today++) {
// 前天
int anteayer = getAnteayer(today);
// 下面做张村李村今天和昨天能否说谎
lieTodayZhang = zhang.contains(today);
lieTodayLi = li.contains(today);
lieAnteayerZhang = zhang.contains(anteayer);
lieAnteayerLi = li.contains(anteayer);
//这里我感觉写的也不好
//lie必须保证在两个村子按照以下判断都成立时才能为true
//如果张村或者李村今天是不能说谎的日子,不用判断就能成立
//这里我是根据记录出来的规律,推倒的先判断张村今天如果不是说谎日,就要保证他前天不能说谎
//判断成立后在判断李村,和上面两行描述一样
boolean lie = false;
if (lieTodayZhang == false) {
if (lieAnteayerZhang == true) {
lie = true;
} else {
lie = false;
}
}
if (lieTodayLi == false) {
if (lieAnteayerLi == true) {
lie = true;
} else {
lie = false;
}
}
if (lie) {
System.out.println(today);
}
}
}
// 获得对于今天来讲的前天
private static int getAnteayer(int today) {
// 这里需要一个循环数组
// 先用一种烂方法代替
if (today == 1) {
return 6;
} else if (today == 2) {
return 7;
} else if (2 < today && today < 8) {
return today - 2;
} else {
System.out.println("程序有问题才会跑这里来");
return -1;
}
}
}
第一次发有点逻辑上判断的小问题 重新发下