博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件工程个人作业02。
阅读量:5805 次
发布时间:2019-06-18

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

1.设计思想:

  建立一个主函数,声明参数变量。另建一个空成员变量的类,用于设置主函数中的成员变量,或对调用的数组进行相关操作,然后在主函数将字符串进行连接。

2.程序代码:

package 课堂;import java.util.Random;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintStream;public class TheAirthmeticOperation{    public static void main(String args[]) throws IOException    {        TheAirthmeticOperation_Fuction Fuction = new TheAirthmeticOperation_Fuction();//声明Fuction。        FileOutputStream fs = new FileOutputStream(new File("D:\\text.txt"));        PrintStream p = new PrintStream(fs);                int num = Fuction.Setnumber();//num位数组上限。        int n1 = 100;//n1为随机数上限,默认100。        int n2 = 2;//n2控制有无乘除法,2:加减法;4:加减乘除法。        int n3 = 0;//n3控制输出方式,0:直接输出;1:输出到txt。        int n4 = 0;//n4控制是否定制多数运算。        int n5 = 0;//n5控制多数运算数量。        int n6 = 0;//n6控制多数运算有无括号。        String str = "";//初始化str,用于输出式子。        int []Array1 = new int[num];        int []Array2 = new int[num];//Array1,Array2数组用于求加减法或分数运算的第一个分数。        int []Array3 = new int[num];        int []Array4 = new int[num];//Array3,Array4用于生成第二个分数。        int []judge1 = new int[num];//根据随机结果输出算数符号。        int []judge2 = new int[num];//判断该组数据用于整数运算还是分数运算,0:整数;1:分数。        n1 = Fuction.Setrange();//为n1设置值。        n2 = Fuction.Set_mul_and_div();//为n2设置值。                for(int i = 0;i < num;i++)        {            Array1[i] = Fuction.Randomnumber(n1);            Array2[i] = Fuction.Randomnumber(n1);            Array3[i] = Fuction.Randomnumber(n1);            Array4[i] = Fuction.Randomnumber(n1);            judge1[i] = new Random().nextInt(n2);            judge2[i] = new Random().nextInt(2);        }                Fuction.Setnegativenumber(Array1,Array2,num);//随机为Array1,Array2数组添加负号(可选择不添加)。        Array1 = Fuction.Isrepetition(Array1,num,n1);//使Array1变得不相同。        Fuction.Setremainder(Array1,Array2,num,n2);//设置除法有无余数。        n3 = Fuction.Printmethod();//为n3设置值。        n4 = Fuction.Is_customization();//为n4设置值。        n5 = Fuction.customization_number();//为n5设置值。        n6 = Fuction.customization_brackets();//为n6设置值。                for(int i = 0;i < num;i++)        {            if(judge2[i] == 0)//judge2值为0时,执行整数运算。            {                str = "";                str += Array1[i] + Fuction.Symbol(str,judge1[i]);                if(Array2[i] < 0)//Array2为负时,为其加括号。                {                    str += "(" + Array2[i] + ") = ";                }                else//不为负时,跳过。                    str += (Array2[i] + " = ");                if(n3 == 0)                {                    System.out.println(str);                }                else                {                    p.println(str);                }                                }            if(judge2[i] == 1)//judge2值为1时,执行真分数运算。            {                Fuction.Absolutevaluecomparison(Array1,Array2,i);                Fuction.Absolutevaluecomparison(Array3,Array4,i);                                str = "";                str += "(" + Array1[i] + "/" + Array2[i] + ")"                + Fuction.Symbol(str,judge1[i])                + "(" + Array3[i] + "/" + Array4[i] + ") = ";                                if(n3 == 0)                {                    System.out.println(str);                }                else                {                    p.println(str);                }            }        }        if(n4 == 1)        {            for(int i = 0;i < n5;i++)            {                str = "";                str = Fuction.customization(n6);                if(n3 == 0)                {                    System.out.println(str);                }                else                {                    p.println(str);                }            }        }        p.close();    }}
import java.util.Random;import java.util.Scanner;public class TheAirthmeticOperation_Fuction{    Scanner sc = new Scanner(System.in);        public int Randomnumber(int n)//重写的随机函数,避免随机出零。    {        int number = 0;        while(number == 0)        {            number = new Random().nextInt(n);        }        return number;    }        public int Setnumber()//设置数组,及习题数量。    {        int n = 30;        System.out.println("输入数组数量");        n = sc.nextInt();        return n;    }        public int Setrange()//设置随机数范围。    {        int n = 100;        System.out.println("输入数值范围");        n = sc.nextInt();        return n;    }        public int Set_mul_and_div()//设置习题中是否有乘除法。    {        int n = 0;int m = 2;        System.out.println("是否有乘除法:(0:无  1:有)");        n = sc.nextInt();        if(n == 0)        {            m = 2;        }        else            m = 4;        return m;    }        public int Printmethod()//设置输出习题方式。    {        int n = 0;        System.out.println("打印方式:(0:直接输出  1:打印到txt)");        n = sc.nextInt();        return n;    }        public int Is_customization()//是否定制多数运算。    {        int n = 0;        System.out.println("是否定制多数运算:(0:否  1:是)");        n = sc.nextInt();        return n;    }        public int customization_number()//设置多数运算数量。    {        int n = 0;        System.out.println("输入多数运算数量");        n = sc.nextInt();        return n;    }        public int customization_brackets()//设置多数运算数量。    {        int n = 0;        System.out.println("十位数运算是否有括号:(0:否  1:是)");        n = sc.nextInt();        return n;    }        public String customization(int n)//定制多数习题。    {        int []Array = new int[10];//定义一个数组。        int []a = new int[10];//控制数与数之间符号。        int []b = new int[20];//控制在某位值是否出现括号。        String []brackets = new String[20];//用于存放括号。        String str = "";                    for(int i = 0;i < 10;i++)//随机数。        {            a[i] = new Random().nextInt(4);            Array[i] = Randomnumber(20);        }        for(int i = 0;i < 20;i++)//初始化括号数组。        {            brackets[i] = "";        }                if(n == 1)//用户选择定制。        {            for(int i = 0;i < 20;i += 2)            {                b[i] = new Random().nextInt(4);/*为b[i生成随机数,当b[i]为零时,                brackets[i]添加左括号,brackets[i + 3]添加右括号,括号套括号未考虑。*/                if(i >= 0 && i < 17)//i > 16 时,没有位置添加右括号,遂向下执行。                {                    if(b[i] == 0)                    {                        brackets[i] += "(";                        brackets[i + 3] += ")";                        i += 2;                    }                }            }        }                        for(int i = 0;i < 9;i++)//将数,括号,符号相连。        {            str += brackets[2 * i] + Array[i] + brackets[2 * i + 1];            str = Symbol(str,a[i]);        }        str += Array[9] + brackets[19] + " =";                return str;    }        public void Setremainder(int []Array1,int []Array2,int num,int n2)    {
//若设置除法无余数,另Array1[i] < Array2[i]。 if(n2 == 2) { return; } int n = 0; System.out.println("除法是否有余数:(0:无 1:有)"); n = sc.nextInt(); if(n == 0) { for(int i = 0;i < num;i++) { Absolutevaluecomparison(Array1,Array2,i); } } else return; } public void Setnegativenumber(int []Array1,int []Array2,int num) {
//若设置有负数,随机为Array[i]添加符号,i为随机 int n = 0;int stochastic1 = 0;int stochastic2 = 0; System.out.println("运算有无负数:(0:无 1:有)"); n = sc.nextInt(); if(n == 0) { return; } else { while(true) { stochastic1 = Randomnumber(num); stochastic2 = Randomnumber(num); Array1[stochastic1] = -Array1[stochastic1]; Array2[stochastic2] = -Array2[stochastic2]; if(stochastic1 == 1)//当stochastic1 = 1 时,跳出循环。 { break; } } } } public void Absolutevaluecomparison(int []Array1,int []Array2,int i) {
//使两个数最小的数放在Array[i]中,保证无余数或分数为真分数。 if(Math.abs(Array1[i]) > Math.abs(Array2[i])) { int t = Array1[i]; Array1[i] = Array2[i]; Array2[i] = t; } } public int[] Isrepetition(int[] Array,int num,int n1) {
//删除Array数组中重复元素,缺省数重新随机(此处未考虑随机后还有相等情况,因重复几率较低)。 int length = 1; boolean flag = false; for(int i = 1;i < Array.length;i++) { for(int j = 0;j < length;j++) { if(Array[i] == Array[j]) { flag = true; } } if(!flag) { Array[length] = Array[i]; length++; } flag = false; } int[] newArray = new int[num]; System.arraycopy(Array,0,newArray,0,length); for(int i = length;i < num;i++) { newArray[i] = Randomnumber(n1); } return newArray; } public String Symbol(String str,int value) {
//根据值为str添加符号。 if(value == 0) { str += " + "; } if(value == 1) { str += " - "; } if(value == 2) { str += " * "; } if(value == 3) { str += " / "; } return str; }} 3.运行截图 :

4.总结:

  用java写这么多行的程序还是头一次。平常还是习惯用c写。其中还是遇到了一些问题,比如java中似乎没有值地址递,想在别的函数中直接修改调用的值是不行的(除非调用的是数组的首地址),只能返回出来再赋值给它。想不这么实现也可以,就得把参数定义给成员变量。后来想到这里,确实可行,把设置的参数看成一组成员变量,不过顺序运行下来,也就一组对象,也没有必要重写大费周章了。在这点上,我好像看出了java的方便与麻烦之处。另一方面,通过网上的查询,也明白了点java中的输出流。总的来讲,收获还是不小的。

5.每周计划

  听课 编程 读书 总计
周一 2 2.5 0 5
周二 0 1 0 0.5
周三 0 1 0 1
周四 0 1 0 1
周五 0 0.5 0 0.5
周六 0 0.5 0 0.5
周日 0 0 1.5 1.5

6.时间记录日志

日期 开始时间 结束时间 中断时间(min) 净时间(min) 活动 备注
3.14 8:00 9:50 10 100 上课 课间休息十分钟
14:00 17:30 48 132 编程 中断时间为躺着冥思或溜达
3.15 14:00 15:00 2 58 编程  
21:00 21:40 5 35 编程  
3.16 7:00 7:20 0 20 编程  
16:00 16:30 1 29 编程  
20:00 20:40 5 35 编程  
3.17 16:30 17:20 8 42 编程  
3.18 7:00 7:15 0 15 编程  
17:00 17:30 6 24 编程  
3.19 11:05 11:32 0 27 编程  
总计 / / 85 507 /  

 

7.缺陷记录日志

  都是些数组超出长度的小错误,没有在修改缺陷这里花费多少时间。

 

 

 

 

转载于:https://www.cnblogs.com/shenshenxin/p/5295556.html

你可能感兴趣的文章
argparse - 命令行选项与参数解析(转)
查看>>
一维数组
查看>>
Linux学习笔记之三
查看>>
POJ1061 青蛙的约会(扩展欧几里得)题解
查看>>
关于Android studio团队协同开发连接到已有项目
查看>>
Sql获取表的信息
查看>>
Java-大数据-图汇集
查看>>
一、数论算法
查看>>
Asp.net MVC 中Controller的返回类型大全
查看>>
用一条SQL语句实现斐波那契数列
查看>>
[高中作文赏析]跋涉与成功
查看>>
swift-辞典NSDictionary定义,变化的关键,删/加入关键
查看>>
python----slots属性安全类
查看>>
《Programming WPF》翻译 第5章 1.不使用样式
查看>>
.NET垃圾回收:非托管资源,IDispose和析构函数的结合
查看>>
H2内存数据库 支持存储到文件
查看>>
css3处理sprite背景图压缩来解决H5网页在手机浏览器下图标模糊的问题
查看>>
BlockCanary 一个轻量的,非侵入式的性能监控组件(阿里)
查看>>
【HDU 1228】A + B
查看>>
CentOS 7搭建SVN服务器
查看>>