从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏。随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式
先定义四张牌
static int a,b,c,d;
生成随机数函数
public static void create() {
a=(int)(Math.random()*13+1);
System.out.println("第一张牌为"+a);
b=(int)(Math.random()*13+1);
System.out.println("第二张牌为"+b);
c=(int)(Math.random()*13+1);
System.out.println("第三张牌为"+c);
d=(int)(Math.random()*13+1);
System.out.println("第四张牌为"+d); //生成4个随机数
}
四则运算函数
public static int szys(int j,int k,String l) {
if(l=="+")
return (j+k);
else if(l=="-")
return (j-k);
else if(l=="*")
return (j*k);
else
return (j/k);
}
计算函数
public static void jisuan() {
int t=0; //判断能否实现24点
int[] sj=new int[4];//定义存放数据的数组
sj[0]=a;
sj[1]=b;
sj[2]=c;
sj[3]=d; //存放数据
String ysf[]= {"+","-","*","/"}; //存放运算符
int result1=0,result2=0,result3=0; //存放结果
for(int m=0;m<4;m++) //计算第一个数
{
for(int n=0;n<4;n++) //计算第二个数
{
if(m!=n) //防止数据重复
{
for(int x=0;x<4;x++) //第一个运算符
{
result1=szys(sj[m],sj[n],ysf[x]); //存放第一个结果
for(int p=0;p<4;p++) //计算第三个数
{
if(p!=m&&p!=n) //防止数据重复
{
for(int y=0;y<4;y++) //第二个运算符
{
result2=szys(result1,sj[p],ysf[y]); //存放第二个结果
for(int q=0;q<4;q++) //计算第四个数
{
if(q!=m&&q!=n&&q!=p) //防止数据重复
{
for(int z=0;z<4;z++) //第三个运算符
{
result3=szys(result2,sj[q],ysf[z]); //存放第三个结果
if(result3==24)
{
System.out.println("("+"("+"("+sj[m]+ysf[x]+sj[n]+")"+ysf[y]+sj[p]+")"+ysf[z]+sj[q]+")");
t=1;
}
}
}
}
}
}
}
}
}
}
}
if(t==0)
System.out.println("不能实现24点!");
}
主函数
public static void main(String[] args){
create();
System.out.println("表达式如下:");
jisuan();
}