跪求高手帮忙写个java程序

我周三有个程序要交,但是我现在式完全没有头绪怎么去写...真的是跪求各位高手帮我一下!!!我的分已经没有了...我真的对不起啊...是要写一个关于扑克的程序,要求是你的程... 我周三有个程序要交,但是我现在式完全没有头绪怎么去写...真的是跪求各位高手帮我一下!!!我的分已经没有了...我真的对不起啊...

是要写一个关于扑克的程序,要求是你的程序要能读五张牌,然后告诉用户输入的是什么花色
然后报告出你手中的牌是不是以下的:
1.同花
2.顺子
3.同花顺
4.最大同花顺(A,K,Q,J,10)
5.有四个一样的(A,A,A,A)
6.三个一样的加两个一样的
7.有三个一样的
8.有两个对子
9.有一个对子

真的是跪谢大家!!!
我的QQ:243685294
如果有不清楚的请问我,谢谢谢谢
展开
 我来答
pujia12345
2010-02-23 · TA获得超过3680个赞
知道大有可为答主
回答量:3456
采纳率:0%
帮助的人:2973万
展开全部
有意思,我就给你设计下
import java.util.*;
import java.io.*;

class Poker{
private String color;
private String value;
private int inner;
/*inner值是:2-14*/
public Poker(String color,int inner){
this.color=color;
this.inner=inner;
if(inner==11) value="J";
else if(inner==12) value="Q";
else if(inner==13) value="K";
else if(inner==14) value="A";
else value=String.valueOf(inner+1);
this.value=value;
}
public String getColor(){
return this.color;
}
public String getValue(){
return this.value;
}
public int getInner(){
return this.inner;
}
public String getPoker(){
return this.color+this.value;
}
}
class Game{
private Poker[] pokers=new Poker[52];
private Poker[] random;
private String type;
private int level;
public Game(){
for(int i=0;i<pokers.length;i++){
if(i/13==0) {
pokers[i]=new Poker("红桃",i%13+2);
}
if(i/13==1) {
pokers[i]=new Poker("黑桃",i%13+2);
}
if(i/13==2) {
pokers[i]=new Poker("方片",i%13+2);

}
if(i/13==3) {
pokers[i]=new Poker("樱花",i%13+2);

}
}
}
public void print(){
for(int i=0;i<pokers.length;i++){
System.out.println(pokers[i].getPoker());
}
}
public void printSelect(){
System.out.println("-------"+type+"--------");
for(int i=0;i<random.length;i++){
System.out.println(random[i].getPoker());
}
System.out.println("-------------------------------");
}
public void randomSelect(int num,boolean ai){
Set<Integer> set=new HashSet<Integer>();
if(!ai){

Scanner s=new Scanner(System.in);
for(int i=0;i<num;i++){
System.out.println("请输入牌序号(1-52)[当前第"+(i+1)+"张,共"+num+"张]:");
int tmp=s.nextInt();
if(tmp>52 || tmp<1){
System.out.println("错误的序列!");
i--;
continue;
}
if(set.contains(tmp)){
System.out.println("该扑克牌已选取!");
i--;
continue;
}
set.add(i-1);
}
s.close();
}
else{
for(int i=0;i<num;i++){
int tmp=(int)(Math.random()*52);
if(set.contains(tmp)){
i--;
continue;
}
else set.add(i);
}
}
random=new Poker[num];
int m=0;
for(int option:set){
random[m++]=pokers[option];
}
}
public void ruffle(){
for(int i=0;i<52;i++){
int a=(int)(Math.random()*52);
int b=(int)(Math.random()*52);
Poker temp;
temp=pokers[a];
pokers[a]=pokers[b];
pokers[b]=temp;
}
}
//检查是否同花
public boolean isSameColor(){
Set<String> set=new HashSet<String>();
for(int i=0;i<random.length;i++)
set.add(random[i].getColor());
if(set.size()==1) return true;
else return false;
}
//检查是否顺子
public boolean isStraight(){
int[] list=new int[random.length];
for(int i=0;i<random.length;i++)
list[i]=random[i].getInner();
Arrays.sort(list);
for(int i=1;i<random.length;i++)
if(list[i-1]!=list[i]-1) return false;
return true;
}
//检查同花顺
public boolean isSameColorAndStraight(){
if(isSameColor() && isStraight()) return true;
else return false;
}
//最大同花顺A K Q J 10
public boolean isMax(){
if(isSameColorAndStraight()){
int[] list=new int[random.length];
for(int i=0;i<random.length;i++)
list[i]=random[i].getInner();
Arrays.sort(list);
if(list[0]==10 && list[4]==14) return true;
else return false;
}
return false;
}
//检查是否4个一样的
public boolean isBomb(){
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int i=0;i<random.length;i++)
if(map.containsKey(random[i].getInner())) map.put(random[i].getInner(),map.get(random[i].getInner())+1);
else map.put(random[i].getInner(),1);
for(int value:map.keySet()){
if(map.get(value)==4) return true;
}
return false;
}
//检查是否3+2
public boolean isThreeAndTwo(){
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int i=0;i<random.length;i++)
if(map.containsKey(random[i].getInner())) map.put(random[i].getInner(),map.get(random[i].getInner())+1);
else map.put(random[i].getInner(),1);
if(map.size()!=2) return false;
else{
for(int value:map.keySet()){
if(map.get(value)==2 || map.get(value)==3) return true;
else return false;
}
return false;
}
}
//检查有3个一样的
public boolean isThree(){
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int i=0;i<random.length;i++)
if(map.containsKey(random[i].getInner())) map.put(random[i].getInner(),map.get(random[i].getInner())+1);
else map.put(random[i].getInner(),1);
for(int value:map.keySet()){
if(map.get(value)==3) return true;
}
return false;
}
//检查有2个一样的(单对)
public boolean isTwoByOdd(){
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int i=0;i<random.length;i++)
if(map.containsKey(random[i].getInner())) map.put(random[i].getInner(),map.get(random[i].getInner())+1);
else map.put(random[i].getInner(),1);
for(int value:map.keySet()){
if(map.get(value)==2) return true;
}
return false;
}
//检查有2个一样的(双对)
public boolean isTwoByDouble(){
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
int number=0;
for(int i=0;i<random.length;i++)
if(map.containsKey(random[i].getInner())) map.put(random[i].getInner(),map.get(random[i].getInner())+1);
else map.put(random[i].getInner(),1);
for(int value:map.keySet()){
if(map.get(value)==2) number++;
}
if(number==2) return true;
else return false;
}
public void check(){
if(isTwoByOdd()) {type="你手中的牌是单对子";level=1;}
else if(isTwoByOdd()) {type="你手中的牌是双对子";level=2;}
else if(isThree()) {type="你手中的牌是小炸弹";level=3;}
else if(isThreeAndTwo()) {type="你手中的牌是小炸弹加单对子";level=4;}
else if(isBomb()) {type="你手中的牌是核弹";level=7;}
else if(isMax()) {type="恭喜你,你手中的牌是同花大顺";level=9;}
else if(isSameColorAndStraight()) {type="恭喜你,你手中的牌是同花顺";level=8;}
else if(isStraight()) {type="你手中的牌是顺子";level=5;}
else if(isSameColor()) {type="你手中的牌是同花";level=6;}
else {type="你手中的牌比较小";level=0;}
}
public String getType(){
return this.type;
}
public int getLevel(){
return this.level;
}
public void clear(){
random=new Poker[5];
type="";
level=0;
}
public static void main(String[] str){
Game game=new Game();
game.ruffle();
for(int i=0;i<5000;i++){
game.clear();
game.ruffle();
game.randomSelect(5,true);
game.check();
//选择5000次,看看有多少顺子
if(game.getLevel()==5) game.printSelect();
}
}
}
sharp54181314
2010-02-23
知道答主
回答量:28
采纳率:0%
帮助的人:0
展开全部
学习
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式