zoukankan      html  css  js  c++  java
  • 四则运算(3)

    程序要求: 可以控制下列参数: 是否有乘除法; 是否有括号(最多可以支持十个数参与计算); 数值范围; 加减有无负数; 除法有无余数!

    程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。

    设计思路:将产生的int类型随机数在方法中通过随机的方法确定这个数据是否为分数,对真分数进行判断。

    判断是否重复时,将生成的算式保存在一个数组中,输出之前进行验证,判断是否存在并进行输出。

    源代码: 

    package demo;
    import java.*;
    import java.util.*;

    public class Main {
    public static void main(String args[])
    {
    Scanner scan;
    scan = new Scanner(System.in);
    int flag;
    int max;
    int ysf;
    int num;
    int i = 0;
    char[] ch = new char[4];
    ch[0] = '+';
    ch[1] = '-';
    ch[2] = '*';
    ch[3] = '/';


    public String putong(){
    char [] a=new char[4];
    a[0]='+';
    a[1]='-';
    a[2]='*';
    a[3]='/';
    int num1=(int)(Math.random()*10+1);
    int num2=(int)(Math.random()*10+1);
    int num=(int)(Math.random()*4+0);
    String s=num1+" "+a[num]+" "+num2;
    return s;
    }
    %>
    <%!
    public String zhenfenshu(){
    char [] a=new char[4];String m,n="";
    a[0]='+';
    a[1]='-';
    a[2]='*';
    a[3]='/';
    int num1=(int)(Math.random()*10+1);
    int num2=(int)(Math.random()*10+1);
    for(;num1==num2;num1=(int)(Math.random()*10+1),num2=(int)(Math.random()*10+1)){}
    if(num1<num2){
    m=num1+"/"+num2;
    }
    else
    m=num2+"/"+num1;

    for(num1=(int)(Math.random()*10+1),num2=(int)(Math.random()*10+1);num1==num2;num1=(int)(Math.random()*10+1),num2=(int)(Math.random()*10+1)){}

    if(num1<num2){
    n=num1+"/"+num2;
    }
    else
    n=num2+"/"+num1;

    int num=(int)(Math.random()*4+0);
    String s=m+" "+a[num]+" "+n;

    return s;
    }

    for(int j = 0;i < num;i ++)
    {
    flagA = SuiJileixing();
    flagB = SuiJileixing();
    if(flagA == 1 && flagB == 0)
    {
    a = SuiJi1();
    b = SuiJi1();
    b1 = SuiJi1() + 1;
    if(b < b1)
    {
    b = b;
    }
    else
    {
    b1 = b1 + b;
    }
    ysf = SuiJiyunsuanfu();
    s = a + " " + ch[ysf] + " (" + b + "/" + b1 + ") = ";
    if(Check(str,s,i) != 1)
    {
    str[i] = s;
    System.out.print(str[i]);
    A = (double)a;
    B = (double)b;
    B1 = (double)b1;
    show(A,B/B1,ysf);
    i ++;
    }
    }

    String type = (String)request.getParameter("type");
    int chutishu=Integer.parseInt(request.getParameter("chutishu"));
    int j=0;
    String []a=new String [chutishu];

    for(j=0;j<chutishu;j++){
    if(type.equals("zhengshu"))
    a[j]=putong();
    else if(type.equals("zhenfenshu"))
    a[j]=zhenfenshu();
    else if(type.equals("douyou")){
    int m=(int)(Math.random()*2+1);
    if(m==1)
    a[j]=putong();
    else if(m==2)
    a[j]=zhenfenshu();
    }

    for(int k=0;k<j;k++){
    if(a[k].equals(a[j]))
    {j--;break;}
    else
    continue;
    }

    public static void show(double a,double b,int k)
    {
    double c ;
    if(k == 0)
    {
    c = a + b;
    System.out.println((int)c);
    }
    if(k == 1)
    {
    c = (int) (a - b);
    System.out.println((int)c);
    }
    if(k == 2)
    {
    c = (int) (a * b);
    System.out.println((int)c);
    }
    if(k == 3)
    {
    c = (int) (a / b);
    System.out.println((int)c);
    }
    }


    }


    程序截图:

     总结:通过这次作业 我充分的意识到如何将一个复杂的程序分解进行解决。在编写的时候一定要注意使用单元测试的思想,不能急于求成,这次作业未能完成检验重复的功能,会在以后逐步完善并发布。

  • 相关阅读:
    struts2文件上传大小限制问题
    kindeditor使用方法
    ajaxFileUpload SyntaxError: syntax error
    Attempted to lock an already-locked dir异常解决方法
    Simditor图片上传
    心理学
    Vue.JS
    SQL Server 日常维护经典应用
    12 个 JS 技巧
    Linq to js
  • 原文地址:https://www.cnblogs.com/ylx111/p/6567835.html
Copyright © 2011-2022 走看看