日期:2014-05-20  浏览次数:20682 次

很老的一道题了,大家帮忙看看
*有两个村,张村和李村 张村的人星期一三五说谎 李村的人星期二四六说谎
*
* 一人问,今天周几?结果两个村的人都回答“前天是我说谎的日子”
*
* 问:今天是周几?

最近看到也在解这个题,面向过程的解法基本是熟悉了,正在尝试用面向对象来解决这个问题,但在构建村子类的时候卡了思路了,大家也尝试解解看,有没有什么好的思路一起共享。

下面是我的代码块,只是运行的结果是周日,不知道错在哪了,求大神帮忙查查


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;
                }