---恢复内容开始---
熟悉使用道具
github的地址 | (https://github.com/zhanglong-web/AchaoCalculator) |
---|---|
github用户名 | zhanglong-web |
学号后五位 | 61421 |
博客地址 | (https://www.cnblogs.com/zxsnh/) |
作业链接 | (https://www.cnblogs.com/harry240/p/11515697.html) |
我是用java写的四则运算,首先就是java的环境配置,下载地址如下:1、环境的配置
(http://www.oracle.com/technetwork/java/javase/downloads/index.html)
因为这个配置非常麻烦再之前还是通过视频以及同学的帮助才下载好,而且在网站下载全是英语对于本身英语不好当时只有在问同学以及在网站上搜索步,还有相关视频的搜索
2、代码分析
阿超家里的孩子上小学一年级了,这个暑假老师给家长们布置了一个作业:家长每天要给孩子出一些合理的,但要有些难度的四则运算题目,并且家长要对孩子的作业打分记录。
作为程序员的阿超心想,既然每天都需要出题,那何不做一个可以自动生成小学四则运算题目与解决题目的命令行 “软件”呢。他把老师的话翻译一下,就形成了这个软件的需求:程序接收一个命令行参数 n,然后随机产生 n 道加减乘除(分别使用符号+-*/来表示)练习题,每个数字在 0 和 100 之间,运算符在 2 个 到 3 个之间。
由于阿超的孩子才上一年级,并不知道分数。所以软件所出的练习题在运算过程中不得出现非整数,比如不能出现 3÷5+2=2.6 这样的算式。
练习题生成好后,将生成的 n 道练习题及其对应的正确答案输出到一个文件 subject.txt 中。
当程序接收的参数为4时,以下为一个输出文件示例。
13+17-1=29 11*15-5=160 3+10+4-16=1
**由题目分析得到:我们需要随机生成数字以及符号,我没有运用栈以及队列的运用,因为当时对数据结构的学习差,导致很多知识的运用不当,我是用数组来纳入随机数,以及用数组来纳入四个运算符,利用循环的方式产生几个数的运算步骤如下:
用char定义ch的数组包括“+、-、*、/”四个运算符,在定义一个随机整数数组,在各个随机数之间穿插运算符,再在之前定义一个n1,用来产生2~3到个运算符,从而随机生成两种形式的运算。
如图的代码:
public static void CreatQuestion(int n) {
char[] ch={'+','-','*','/'};
Random random=new Random(); //随机数
int sum=0;
File file =new File("subject.txt"); //删除之前的文件
file.delete();
while(sum<n) {
int n1=random.nextInt(2)+2; //产生2或3
char[] ch1=new char[n1-1];
for(int j=0;j<n1-1;j++)
ch1[j]=ch[random.nextInt(4)];
int[] num=new int[n1];
for(int j=0;j<n1;j++)
num[j]=random.nextInt(100);
for(int j=0;j<n1-1;j++)
if(ch1[j]=='/'&&num[j+1]==0)
continue;
String str=new String();
if(n1==2)
str=num[0]+" "+ch1[0]+" "+num[1];
if(n1==3)
str=num[0]+" "+ch1[0]+" "+num[1]+" "+ch1[1]+" "+num[2];
float a=judge(str);
if(a%1.0==0&&a>0) {
System.out.println(str+" "+"="+" "+(int)a);
save(str+" "+"="+" "+(int)a);
}
else
continue;
sum++;
}
}
之后便是让运算符进行先后顺序的运算,利用循环进行优先化,先乘除再加减:
public static float judge(String str) { float sum=0; String[] str1=str.split(" "+""); int num=0; while(str1.length>2) { for(int i=0;i<str1.length;i++) if(str1[i].equals("/")) { sum=0; sum+=Float.valueOf(str1[i-1])/Float.valueOf(str1[i+1]); str1[i-1]=String.valueOf(sum); str1[i]=" "; str1[i+1]=" "; num++; str1=change(str1); break; } for(int i=0;i<str1.length;i++) if(str1[i].equals("*")) { sum=0; sum+=Float.valueOf(str1[i-1])*Float.valueOf(str1[i+1]); str1[i-1]=String.valueOf(sum); str1[i]=" "; str1[i+1]=" "; num++; str1=change(str1); break; } for(int i=0;i<str1.length;i++) if(str1[i].equals("-")) { sum=0; sum+=Float.valueOf(str1[i-1])-Float.valueOf(str1[i+1]); str1[i-1]=String.valueOf(sum); str1[i]=" "; str1[i+1]=" "; num++; str1=change(str1); break; } for(int i=0;i<str1.length;i++) if(str1[i].equals("+")) { sum=0; sum+=Float.valueOf(str1[i-1])+Float.valueOf(str1[i+1]); str1[i-1]=String.valueOf(sum); str1[i]=" "; str1[i+1]=" "; num++; str1=change(str1); break; } } return sum; }
代码的运行结果如下:
3、Git的安装以及代码提交过程
安装Git则是用老师给的地址下载的,如下:
Git安装连接:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git
Git学习相关手册连接:https://www.cnblogs.com/math/p/git.html
之后就是GitHub的注册,参考网址:https://blog.csdn.net/p10010/article/details/51336332,
因为全是英文,所以所有过程都是参考的网上说的步骤一步一步的实行注册,搞完这步后就是将本地代码上传到GitHub上,创建一个保存代码的文件,然后点击右键选择Git Bash here,来配置用户名以及邮箱,还有添加文件提交文件
如图:
**之后就是在github上生成SSH密钥,在这里我停留了半天,一直没有生成好,然后参考了百度才慢慢又弄了几次才弄好(当时几乎要放弃了)
$ ssh-keygen -t rsa -C “13654922203@163.com”
按3个回车,密码为空。
在C:UsersAdministrator.ssh目录下找到id_rsa.pub复制里面所有内容
那个Title中的名称可以任意填写,将C:UsersAdministrator.ssh目录下id_rsa.pub复制的所有内容粘贴到Key中,点击Add SSH Key,SSH密钥完成
之后便可以远程提交作业了,远程提交 git push origin master
当你在GitHub上看有你名字的文件生成,则就完成了远程代码的提交。
4、对本次作业的感想
1)、对这种git以及GitHub的提交代码方式感觉难搞,因为网站全英文,让我看了就想退出,但是作业还是坚持了下来,不懂的百度问同学最终慢慢的提交成功。感谢同学以及百度的帮助。
2)对c++的学习要加速,以及自己对数据结构的使用不扎实,需要再次进行巩固。
---恢复内容结束---