博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件工程概论作业03
阅读量:4942 次
发布时间:2019-06-11

本文共 6544 字,大约阅读时间需要 21 分钟。

这一周,老师有提出了新的要求。

1、生成随机数,整数的和分数的,分数的用字符串表示,单独写一个分数类,分子分母,写出分数加减乘除的方法。

2、生成随机运算符数组,每道题最多有10个运算数,所以最多有9个运算符。

3、生成表达式,用控制语句选择要生成的表达式。

3、结果的处理,是分数的要化简。

package demo;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Random;import java.util.Scanner;import java.util.Stack;  public class Main2 {    public static void main(String[] args) throws ClassNotFoundException, SQLException{        Scanner sc = new Scanner (System.in);        System.out.println("请选择    1.整数运算    2.分数运算");        int t = sc.nextInt();        switch(t)        {            case 1:            {                Integer(sc);                break;            }            case 2:            {                fenshu(sc);            }        }             }              public static int simple(int a,int b)    //求最大公约数    {              while(a%b!=0){              int temp=a%b;                a=b;                b=temp;              }              return b;      }              public static int gongbei(int a,int b)      //求最小公倍数    {        int t=simple(a,b);        return a*b/t;    }                       public static String liangfenshujisuan(String a,String b,char c)          //两个真分数的计算    {        int t=0;        int t1=0,t2=0;        int p1=0,p2=0;        String s="";        String d[]=a.split("\\/");        String d1[]=b.split("\\/");        int da[]=new int [d.length];        int db[]=new int [d1.length];        for(int i=0;i
num=new Stack
(); Stack
fuhao=new Stack
(); a+="#"; fuhao.push("#"); char ch; int i=0; int s=0; int y=0; ch=a.charAt(i); while(!(ch+"").equals("#")||(!(fuhao.peek().equals("#")))) { if(ch==' ') //如果ch=" ",则说明接下来是数字 { String rn=""; while(true) { ch=a.charAt(++i); if(ch==' ') { break; } rn+=ch; } if((i+1)
') //优先级高,弹出两个数和一个运算符,进行运算 { String st1=num.pop(); String st2=num.pop(); String fuh1=fuhao.pop(); char fuh2=fuh1.charAt(0); //将String类型转为char类型 String sz=""; sz=liangfenshujisuan(st2,st1,fuh2); if(sz.equals("error")) //如果运算中有问题,就结束运算 { return "error"; } else { num.push(sz+""); //将两数结果压入栈中 } } else //优先级比较低,把运算符压入栈中 { fuhao.push(ch+""); if((i+1)
=b[i+1])||(b[i+1]==0)||(b[i]==0)) //如果分子大于分母或分子、分母为0,重新赋值 { i=i-2; } } for(int j=0;j
=b[i+1])||(b[i+1]==0)) //如果分子大于分母或分母为0,重新赋值 { i=i-2; } } for(int j=0;j
','>','<','<','<','>','>'}, { '>','>','<','<','<','>','>'}, { '>','>','>','>','<','>','>'}, { '>','>','>','>','<','>','>'}, { '<','<','<','<','<','=',' '}, { '>','>','>','>',' ','>','>'}, { '<','<','<','<','<',' ','='} }; String a="+-*/()#"; int a11=a.indexOf(f); //找出运算符在表格中的行坐标 int a12=a.indexOf(s); //找出运算符在表格中的行坐标 // System.out.println(f+" "+s); return a1[a11][a12]; } public static int [] chansheng(int num) //随机产生括号 { int []b=new int[num]; for(int i=0;i
=0&&b[j+i-1]<=0) { int c=0; for(int k=j;k
0) { t+=a5[i]+" "+a1[i]+" "+a4[a2[i]]; } else { t+=" "+a1[i]+" "+a5[i]+a4[a2[i]]; } } if(a3[num-1]>0) { t+=a5[num-1]+" "+a1[num-1]+" "; } else { t+=" "+a1[num-1]+" "+a5[num-1]; } return t; } public static int[] tys(int a,int b,char c) //两个数的运算 { int []a1=new int [2]; //a1[0]用来记录两数运算结果,a1[1]用来记录两数能否继续算下去 a1[0]=a1[1]=0; int d=0; if(c=='+') { d=a+b; } else if(c=='-') { if(a
num=new Stack
(); Stack
fuhao=new Stack
(); a+="#"; fuhao.push("#"); char ch; int i=0; int s=0; int y=0; ch=a.charAt(i); while(!(ch+"").equals("#") || !fuhao.peek().equals("#")) { if(ch==' ') //如果遇到字符为空,说明遇到数字 { String rn=""; //用来记录数据 while(true) { ch=a.charAt(++i); if(ch==' ') { break; } rn+=ch; } if((i+1)
') //优先级高,弹出两个数和一个运算符,进行运算 { String st1=num.pop(); String st2=num.pop(); int ai1 = Integer.parseInt(st1); int ai2 = Integer.parseInt(st2); String fuh1=fuhao.pop(); char fuh2=fuh1.charAt(0); //将String类型转为char类型 int []sz=new int[2]; sz=tys(ai2,ai1,fuh2); if(sz[1]==1) //如果运算中有问题,就结束运算 { return "error"; } else { num.push(sz[0]+""); //将两数结果压入栈中 } } else //优先级比较低,把运算符压入栈中 { fuhao.push(ch+""); if((i+1)
=0;j--) { if(str1[i]==str1[j]) //判断是否重复 { flag=false; break; } else if((n1==0)&&((d[0]==0)||(d[0]==2))&& //乘法或加法交换同样重复 ((b[i][0]==b[j][1])&&(b[i][1]==b[j][0]))) { flag = false; break; } } for(int z=0;z
=0;j--) { if(str[i].equals(str[j])) { z=0; break; } //else if() } if((z==0)||(s[i].equals("error"))) { i--; } else { String b1[] =new String [2]; //对运算结果进行化简 int b[]=new int [2]; b1=s[i].split("\\/"); b[0]=Integer.parseInt(b1[0]); b[1]=Integer.parseInt(b1[1]); int t=simple(b[0],b[1]); b[0] /=t; b[1] /=t; int a=(int)(b[0]/b[1]); int c=b[0]%b[1]; if(b[0]>b[1]) //判断结果格式 { if(b[0]%b[1]==0) { s1[i]+=a; System.out.println("第"+(i+1)+"道题目:"+str[i]+" ="+a); } else { s1[i]+=a+"'"+c+"/"+b[1]; System.out.println("第"+(i+1)+"道题目:"+str[i]+" ="+s1[i]); } } if(b[1]>b[0]) { s1[i]+=b[0]+"/"+b[1]; System.out.println("第"+(i+1)+"道题目:"+str[i]+" ="+s1[i]); } else if(b[0]==b[1]) { s1[i]+="1"; System.out.println("第"+(i+1)+"道题目:"+str[i]+" ="+s1[i]); } } } lianjiefenshu(str1,s1); //连接数据库,将表达式和结果导入数据库 System.out.println("导入成功!"); } //分数连接数据库 public static void lianjiefenshu(String a[],String b[]) throws ClassNotFoundException, SQLException { Connection conn = null; PreparedStatement pstmt = null; String driverName = "com.mysql.jdbc.Driver"; String userName = "root"; String userPwd = "123456789"; String ur11 = "jdbc:mysql://localhost:3306/size03"; String ur12 = "?user=" + userName + "&password=" + userPwd; String ur13 = "&useUnicode=true&characterEncoding=UTF-8"; String ur1 = ur11 + ur12 + ur13; Class.forName(driverName); conn = DriverManager.getConnection(ur1); String sql = "insert into text03fenshu(表达式,结果) values(?,?)"; pstmt = conn.prepareStatement(sql); for(int i=0;i

但是数据库的问题没有解决,还没查出自己的问题,总是连接失败。

 

转载于:https://www.cnblogs.com/jiandanqinxin/p/6591848.html

你可能感兴趣的文章
PHPCMS V9{loop subcat(0,0,0,$siteid) $r}怎么解释?
查看>>
避免内存重叠memmove()性能
查看>>
jquery实现简单抽奖功能
查看>>
[leetcode]250. Count Univalue Subtrees统计节点值相同的子树
查看>>
理解Backtracking
查看>>
T3 光
查看>>
搭建交叉调试环境 arm-linux-gdb配合gdbserver
查看>>
使用Jsoup 抓取页面的数据
查看>>
使用命令批量对文件中出现的字符串进行替换
查看>>
C#获取URL参数值
查看>>
Struts 框架 之 文件上传下载案例
查看>>
【重走Android之路】【路线篇(二)】知识点归纳
查看>>
graphviz入门
查看>>
scanf中的%[^\n]%*c格式
查看>>
用jquery来实现类似“网易新闻”横向标题滑动的移动端页面
查看>>
CSS可以和不可以继承的属性
查看>>
eclipse每次当我按ctrl+鼠标点击代码,自动关闭,产生原因及解决办法!!
查看>>
hbase
查看>>
用PHP将Unicode 转化为UTF-8
查看>>
HDOJ1002 A+B Problem II
查看>>