免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1065 | 回复: 0
打印 上一主题 下一主题

Java编程之24点游戏 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-22 23:45 |只看该作者 |倒序浏览
这个学期我们学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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP