墨灿网络笔试题

刚去做了墨灿网络的笔试题,最后一道题由于时间的原因没有写完,现在回来补全。

体的大致意思是这样的:现在有一副扑克牌(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);
	}
}
觉得自己写的不是很好,但是也算是完成了吧;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值