- 论坛徽章:
- 0
|
这个学期我们学java ,老师布置了几到课后作业,其中一个就是实现24点游戏,好多同学都做不来,昨天好不容易搞定,只是不知道运行后的结果怎么样,机子刚恢复了一道,软件都还没有时间装好。
现在拿出来和大家一起共享,因为本人一直相信“共享”将会上IT业界永远的主题。,如果各位朋友运行后有什么问题的话可以给本人留言,我会尽量满足大家的要求。
public class game24
{
public game24()
{
}
int truenum=0;
int falsenum=0;
int totalnum=0;
public static void main(String[] args)
{
init();
calstring();
action();
}
//////////////////////////////////////////////////////////////////////////////////////////
public void init()
{
system.out.print("请将以下四个整数用+、-、*、/组合起来,");
system.out.print("并把组合的表达式输入后回车确认,退出请输入exit,并回车确认.");
system.out.println();
for(int i=0;i
{
m_nstatus=(int)(Math.random()*13)+1;
system.out.println(m_nstatus);
}
}
//////////////////////////////////////////////////////////////////////////////////////////
public void action()
{
try
{
int result;
if(result=-1)
{
system.out.print("你输入的表达式不合法,请重新输入!");
}
else if(result!=24)
{
system.out.print("你输入的表达式的值为"+result+",请重新输入!");
falsenum++;
totalnum++;
}
else if(result=24)
{
system.out.print("祝贺你,你的输入正确,继续努力!");
truenum++;
totalnum++;
init();
}
}
catch(Exception e)
{
e.printstackTrace();
}
}
///////////////////////////////////////////////////////////////////////////////////////
public void calstring()
{
string str;
BufferedReader buf;
BufferedReader(new InputStreamReader(system.in));
str=buf.readline();
if(str.equals("exit"))
{
system.out.println("成绩统计如下:");
system.out.println("做对"+truenum+"道题。");
system.out.println("做错"+falsenum+"道题。");
system.out.println("正确率为:"+truenum/totalnum);
int[] nums=new int[4];
string[] ops=new string[4];
for(int i=0;i
{
ops="";
}
string tempstr,s="";
int numNo=0;
int opNo=0;
for(int i=0;i
{
tempstr=str.substring(i,i+1);
if(isNumber(tempstr))
{
s+=tempstr;
}
else if(isOperator(tempstr))
{
if(numNo>=4||opNo>=3) return -1;
try
{
nums[numNo]=Integer.parseInt(s);
}
catch(Exception e)
{
}
s="";
numNo++;
ops[opNo]=tempstr;
opNo++;
}
else
{
return -1;
}
}
if(s.length()!=0&&numNo==3)
{
try
{
nums[numNo]=Integer.parseInt(s);
}
catch(Exception e)
{
return -1;
}
}
else return -1;
//判断表达式的数字就是系统随机显示给玩家的数字
int tempstatus[]=new int[4];
for(int i=0;i
{
tempstatus=m_nstatus;
}
for(int i=0;i
{
int j=0;
boolean existed=false;
while(j
{
if(tempstatus[j]==nums)
{
if(tempstatus[j]=-1)
existed=true;
}
j++;
}
if(!existed) return -1;
}
//计算表达式的值
int result=nums[0];
for(int i=0;i
{
if(ops.equals("+"))
{
result+=num[i+1];
}
else if(ops.equals("-"))
{
result-=num[i+1];
}
else if(ops.equals("*"))
{
result*=num[i+1];
}
else if(ops.equals("/"))
{
result/=num[i+1];
}
}
return result;
}
////////////////////////////////////////////////////////////////////////
public boolean isNumber(string str)
{
if(str.equals("0")||str.equals("2")||
str.equals("3")||str.equals("4")||
str.equals("5")||str.equals("6")||
str.equals("7")||str.equals("8")||
str.equals("9"))
{
return true;
}
else
{
return false;
}
}
////////////////////////////////////////////////////////////////////////
private boolean isOpertor(string str)
{
if(str.equals("+")||str.equals("-")||
str.equals("*")||str.equals("/")||)
{
return true;
}
else
{
return false;
}
}
}
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/18354/showart_131494.html |
|