62,621
社区成员
发帖
与我相关
我的任务
分享
public class WhenLie {
public static void main(String[] args) {
Day day;
VillageA a;
VillageB b;
//对每一天进行判断,看前天是否都为说谎日
for (int i = 1; i <= 7; i++) {
day = new Day(i);
a = new VillageA(day);
b = new VillageB(day);
Day beforeYestoday = day.yestaday().yestaday();
boolean a_answer = a.answer(beforeYestoday);
boolean b_answer = b.answer(beforeYestoday);
if (!a_answer && !b_answer) {
System.out.println(i);
}
}
}
}
//A村构建一个类
class VillageA {
boolean isTellLie = true; //true代表说真话
//初始化判定当天是否说谎日
VillageA(Day day) {
if (day.id == 1 || day.id == 3 || day.id == 5) {
isTellLie = false;
}
}
//回答某一天是否说谎日,此day不一定是当天
boolean answer(Day day) {
VillageA v = new VillageA(day);
if (isTellLie) {
return v.isTellLie;
} else {
return !v.isTellLie;
}
}
}
class VillageB {
boolean isTellLie = true;
VillageB(Day day) {
if (day.id == 2 || day.id == 4 || day.id == 6) {
isTellLie = false;
}
}
boolean answer(Day day) {
VillageA v = new VillageA(day);
if (isTellLie) {
return v.isTellLie;
} else {
return !v.isTellLie;
}
}
}
//构建一个日期类,有成员变量id表明是星期几(1代表周一,2代表周二,类推)
class Day {
int id;
Day(int id) {
this.id = id;
}
//返回一个昨天
Day yestaday() {
if (id > 1) {
id--;
} else if (id == 1) {
id = 7;
}
Day day = new Day(id);
return day;
}
}
public static void main(String[] args) {
boolean zhangsan[] = { false, true, false, true, false, true, true };
boolean lisi[] = { true, false, true, false, true, false, true };
int zq = 0;
for (int i = 0; i < 7; i++) {
zq = i > 1 ? i - 2 : 6 - i;
if (((zhangsan[i] && !lisi[i]) && ((zhangsan[i] != zhangsan[zq]) || (lisi[i] != lisi[zq])))
|| ((!zhangsan[i] && lisi[i]) && ((zhangsan[i] != zhangsan[zq]) || (lisi[i] != lisi[zq])))) {
System.out.println(i);
}
}
}
为什么这么简单的题目,还这么多人在纠结。。
