软件工程导论第一次作业——JAVA实现四则运算

我是2017级信息科学与技术学院的学生,初步接触软件工程这门课,在老师的建议下,我发现写博客是一个非常良好的习惯,于是决定用这篇博客记录第一次软件工程导论的作业。

一、任务概述

使用JAVA编写一个程序,该程序能随机生成n道四则运算题,并且答案不得出现分数与小数,运算符在三到五个之间。

 

二、我的思路

我知道计算机不能处理中缀表达式,只能处理后缀表达式。于是最开始的想法是写一个算法,创建两个stack,一个用来存放数字,一个用来存放字符,将中缀表达式转化为逆波兰表达式,再进行计算,即可得到结果。但是后来想到这样的算法耗费的时间较长,于是决定用自己在Web开发中学习的javascript中的eval()函数进行四则运算。该函数能直接将字符串进行计算并得到结果。

 

三、项目结构

我的项目分为两部分,一个是src文件夹下面的Main类,用来生成题目;一个是result.txt,用来存放输出的题目。

软件工程导论第一次作业——JAVA实现四则运算_第1张图片

四、源代码

import java.util.*;
import  java.lang.String;
import java.io.*;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.script.*;

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要生成的题目数量:");
        int t = scanner.nextInt();
        String path = "E:\\calculat\\result.txt";//输出路径
        String word = "2017010282";
        BufferedWriter out = new BufferedWriter(//将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
                new OutputStreamWriter(new FileOutputStream(path,false)));
        out.write(word+"\r\n");
        out.write("\r\n");

        for(int j = 0;j

五、负数问题与小数问题

对与小数问题,我的处理方法是,创建一个result2=result1-(int)result1,即运算结果的小数部分,如果小数部分为0,则符合条件,不然就一直进行while循环。

对于负数问题,我的处理方法是,如果result1小于零,则j--,重新进行一次for循环,直到答案为非负数为止。

 

六、作业感悟

对于本次作业,我最大的感悟就是——作为一个码农,要学会站在巨人的肩膀上处理问题。我知道用逆波兰算法可以实现,但是其耗费的时间会比较多,所以这次决定用eval函数来简化。尤其是在工作以后,公司不会去考虑你用了什么样的方法,他们在意的是最后的呈现与时间。这次项目也成长了许多,自己继续加油吧!

你可能感兴趣的:(软件工程导论第一次作业——JAVA实现四则运算)