刚去做了墨灿网络的笔试题,最后一道题由于时间的原因没有写完,现在回来补全。
体的大致意思是这样的:现在有一副扑克牌(54)张,两个人从中每人抽取两张
扑克牌默认大小顺序:大王>小王>A>K>Q>J>10>9>8>7>6>5>4>3>2
扑克牌组合:大王和小王最大
两个牌点数相同大于两个牌点数不同(比如2,2大于A,大王)
若两个人两个手牌都是对子(比如AA与QQ),则按默认大小比较
若两个人两个手牌皆不相同(则一对一按默认大小顺序比较)
差不多就是这个意思,但是我感觉平手的局面介绍的不是很细致(不是我没记住,是这题逻辑不太严谨)
A:设计一个类OnePaper,表示单张牌的属性;设计一个类HandsPaper表示每个人手里牌的属性;
B:设计一个方法计算谁获胜;
解题:
public class HandsPaper {
private OnePaper firstPaper;
private OnePaper secondPaper;
public OnePaper getSecondPaper() {
return secondPaper;
}
public void setSecondPaper(OnePaper secondPaper) {
this.secondPaper = secondPaper;
}
public OnePaper getFirstPaper() {
return firstPaper;
}
public void setFirstPaper(OnePaper firstPaper) {
this.firstPaper = firstPaper;
}
}
public class OnePaper {
private String pointPaper;
public String getPointPaper() {
return pointPaper;
}
public void setPointPaper(String pointPaper) {
this.pointPaper = pointPaper;
}
}
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import htc.puke.bucket.HandsPaper;
import htc.puke.bucket.OnePaper;
public class Main {
private static Map<String,Integer> map = new HashMap<String,Integer>();
public static void compare(HandsPaper h1,HandsPaper h2){
String h1leftpaper = h1.getFirstPaper().getPointPaper();
String h1rightpaper = h1.getSecondPaper().getPointPaper();
String h2leftpaper = h2.getFirstPaper().getPointPaper();
String h2rightpaper = h2.getSecondPaper().getPointPaper();
if("大王".equals(h1leftpaper)&&"小王".equals(h1rightpaper)){
System.out.println("h1赢了");
return;
}else if("大王".equals(h2leftpaper)&&"小王".equals(h2rightpaper)){
System.out.println("h2赢了");
return;
//h1两张牌相同
}else if(h1leftpaper.equals(h1rightpaper)){
//且h2两张牌相同
if(h2leftpaper.equals(h2rightpaper)){
if(map.get(h1leftpaper)>map.get(h2leftpaper)){
System.out.println("h1赢了");
}else if(map.get(h1rightpaper)==map.get(h2leftpaper)){
System.out.println("打成平手");
}else{
System.out.println("h2赢了");
}
}else{
System.out.println("h1赢了");
}
}else if(h2leftpaper.equals(h2rightpaper)){
System.out.println("h2赢了");
}else{
if(map.get(h1leftpaper)>map.get(h2leftpaper)){
if(map.get(h1rightpaper)>=map.get(h2rightpaper)){
System.out.println("h1赢了");
}else{
System.out.println("打成平手");
}
}else if(map.get(h1leftpaper)==map.get(h2leftpaper)){
if(map.get(h1rightpaper)<map.get(h2rightpaper)){
System.out.println("h2赢了");
}else{
System.out.println("打成平手");
}
}else{
if(map.get(h1rightpaper)<=map.get(h2rightpaper)){
System.out.println("h2赢了");
}else{
System.out.println("打成平手");
}
}
}
}
public static void init(){
map.put("大王", 15);
map.put("小王",14);
map.put("A", 13);
map.put("K",12);
map.put("Q",11);
map.put("J",10);
map.put("10",9);
map.put("9",8);
map.put("8",7);
map.put("7",6);
map.put("6",5);
map.put("5",4);
map.put("4",3);
map.put("3",2);
map.put("2",1);
}
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
HandsPaper h1 = new HandsPaper();
OnePaper ho1 = new OnePaper();
OnePaper ho2 = new OnePaper();
System.out.print("请输入h1leftpaper:");
ho1.setPointPaper(sc.nextLine());
System.out.print("请输入h1rightpaper:");
ho2.setPointPaper(sc.nextLine());
h1.setFirstPaper(ho1);
h1.setSecondPaper(ho2);
HandsPaper h2 = new HandsPaper();
OnePaper hp1 = new OnePaper();
OnePaper hp2 = new OnePaper();
System.out.print("请输入h2leftpaper:");
hp1.setPointPaper(sc.nextLine());
System.out.print("请输入h2leftpaper:");
hp2.setPointPaper(sc.nextLine());
h2.setFirstPaper(hp1);
h2.setSecondPaper(hp2);
init();
compare(h1,h2);
}
}
觉得自己写的不是很好,但是也算是完成了吧;