抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > JAVA逻辑推理题1-谁是凶手

JAVA逻辑推理题1-谁是凶手

时间:2019-07-30 10:46:11

相关推荐

有六个人,姓名职业如下:

"小阳", 医生,

"小刚",医生

"小地", 医生, ;

"小温", 律师,

"小红", 律师,

"小丽", 律师,

小阳妹妹是小地和小红

小丽哥哥是小刚,小温,

小阳的女朋友是小丽

这六个人里的一个人杀了其余五个人中的一个人。

(1)如果凶手和受害者有亲缘关系,则凶手是位男性;

(2)如果凶手和受害者没有亲缘关系,则凶手是位医生;

(3)如果凶手和受害者职业相同,则受害者是位男性;

(4)如果凶手和受害者没有相同工作,则受害者是位女性;

(5)如果凶手和受害者性别不同,则凶手是位律师;

(6)如果凶手和受害者性别相同,则受害者是位医生。

谁是凶手?

package demo;import java.util.*;public class Lj {static class Person {public String name;public int sex; //性别 1男 2女public int occupation; //职业 1医生 2律师public Person() {}public Person(String name, int sex, int occupation) {this.name = name;this.sex = sex;this.occupation = occupation;}//判断是否是亲戚public boolean isRelative(Person p) {return (relatives1.contains(this.name) && relatives1.contains(p.name))|| (relatives2.contains(this.name) && relatives2.contains(p.name));}//判断是否相同职业public boolean isSameOccupation(Person p) {return this.occupation == p.occupation;}//判断性别是否相同public boolean isSameSex(Person p) {return this.sex == p.sex;}public boolean equals(Object o) {if (o == null)return false;if (o.getClass() == Person.class) {if (((Person) o).name == this.name) {return true;}}return false;}}final static List<Person> PERSON_LIST = new ArrayList<>();static {PERSON_LIST.add(new Person("小阳", 1, 1));PERSON_LIST.add(new Person("小刚", 1, 1));PERSON_LIST.add(new Person("小地", 2, 1));PERSON_LIST.add(new Person("小温", 1, 2));PERSON_LIST.add(new Person("小红", 2, 2));PERSON_LIST.add(new Person("小丽", 2, 2));}//亲戚1static Set<String> relatives1 = new HashSet<>(Arrays.asList("小阳,小地,小红".split(",")));//亲戚2static Set<String> relatives2 = new HashSet<>(Arrays.asList("小丽,小刚,小温".split(",")));public static void main(String[] args) {BREAKPOINT:for (Person murderer : PERSON_LIST) {for (Person victim : PERSON_LIST) {boolean isRelative = murderer.isRelative(victim);boolean isSameOccupation = murderer.isSameOccupation(victim);boolean isSameSex = murderer.isSameSex(victim);boolean f1 = isRelative ? murderer.sex == 1 : murderer.occupation == 1;boolean f2 = isSameOccupation ? victim.sex == 1 : victim.sex == 2;boolean f3 = isSameSex ? victim.occupation == 2 : murderer.occupation == 2;if (f1 && f2 && f3 && !murderer.name.equals(victim.name)) {System.out.println("凶手是" + murderer.name + ",受害人是" + victim.name);break BREAKPOINT;}}}}}

如果觉得《JAVA逻辑推理题1-谁是凶手》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。