张老师的生日问题 求java code
大家都知道张老师生日问题 这道面试题吧? 我再发一下
小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗?
3月4日 3月5日 3月8日
6月4日 6月7日
9月1日 9月5日
12月1日 12月2日 12月8日
小明说:如果我不知道的话,小强肯定也不知道
小强说:本来我也不知道,但是现在我知道了
小明说:哦,那我也知道了
请根据以上对话推断出张老师的生日是哪一天
我想求这个题的java code!
有人知道该怎么写吗???
[解决办法]
public class Test{ public static void main(String[] args) { System.out.println(getDate()); } static String getDate(){ String[] dates = new String[]{"3-4","3-5","3-8","6-4","6-7","9-1","9-5","12-1","12-2","12-8"}; //排除从日期可以确定月份的生日 String[] datesTemp = dates.clone(); int count = 0; for(int i = 0;i < datesTemp.length;i++){ count = 0; String day = datesTemp[i].split("-")[1]; for(int j = 0;j < dates.length;j++){ if(datesTemp[j].split("-")[1].equals(day)){ count++; } } if(count == 1){ String mouth = datesTemp[i].split("-")[0]; for(int j = 0;j < dates.length;j++){ if(datesTemp[j].split("-")[0].equals(mouth)){ dates[j] = ""; } } } } //获取重复的日子 String day = ""; for(int i = 0;i < dates.length;i++){ count = 0; for(int j = i + 1;j < dates.length;j++){ if(!dates[j].equals("") && dates[i].split("-")[1].equals(dates[j].split("-")[1])){ count++; } } if(count != 0){ day = dates[i].split("-")[1]; break; } } //确定只有2个生日的月份 String mouth = ""; for(int i = 0;i < dates.length;i++){ count = 0; for(int j = 0;j < dates.length;j++){ mouth = dates[i].split("-")[0]; if(!dates[j].equals("") && mouth.equals(dates[j].split("-")[0])){ count++; } } if(count != 2){ for(int j = 0;j < dates.length;j++){ if(mouth.equals(dates[j].split("-")[0])){ dates[j] = ""; } } } } //由于小强知道了,那么就不是重复的日子 for(int i = 0;i < dates.length;i++){ if(!dates[i].equals("") && day.equals(dates[i].split("-")[1])){ dates[i] = ""; } } for(int i = 0;i < dates.length;i++){ if(!dates[i].equals("")) return dates[i]; } return null; }}