20165337第五周实验报告

一.命令行下Java程序开发
1.输入mkdir指令建立文件夹。
2.输入javac -d . 目标文件夹/类名.java编译文件
3.输入javac 包名.类名运行文件
程序运行结果如下:

二.使用IDEA调试程序
1.编写程序及运行

2.依次向下单步调试

3.在循环内调试

4.调试过程中,语句只运行一次


三.编写并且调试运行程序
1.实验题目:实现简单四则运算(能支持分数,加减乘除,支持括号)
2.代码编写:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class hellojdk{
    public static void main(String[] args){
        BufferedReader reader=null;
        InputStreamReader inputStreamReader=null;
        try{
            System.out.println("请输入表达式:或直接输入#结束运算!");
            inputStreamReader=new InputStreamReader(System.in);
            reader=new BufferedReader(inputStreamReader);
            String str=reader.readLine();
            while(!str.equals("#")){
                System.out.println("运算结果为:"+opt(str)+"");
                System.out.println("请输入表达式:或直接输入#结束运算!");
                str=reader.readLine();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
        if(reader!=null){
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static float opt(String s) throws Exception{
        if(s == null || "".equals(s.trim())) {
            return 0f;
        }
        int a1=s.indexOf("+");
        int a2=s.indexOf("-");
        int a3=s.indexOf("*");
        int a4=s.indexOf("/");
        int a5=s.indexOf("(");
        if(a1==-1&&a2==-1&&a3==-1&&a4==-1){
            if(s.trim()==null||"".equals(s.trim())){
                throw new Exception("operate error");
            }
            return Float.parseFloat(s.trim());
        }

        if(a5!=-1){
            int a6=s.indexOf(")");
            if(a6==-1){
                throw new Exception("括号不匹配");
            }else{
                float f=opt(s.substring(a5+1,a6).trim());
                s=s.replace(s.substring(a5,a6+1), String.valueOf(f));
                return opt(s);
            }
        }

        if(a1!=-1){
            return opt(s.substring(0,a1))+opt(s.substring(a1+1,s.length()));
        }
        if(a2!=-1){
            return opt(s.substring(0,a2))-opt(s.substring(a2+1,s.length()));
        }
        if(a3!=-1){
            return opt(s.substring(0,a3))*opt(s.substring(a3+1,s.length()));
        }
        if(a4!=-1){
            return opt(s.substring(0,a4))/opt(s.substring(a4+1,s.length()));
        }
        return Integer.parseInt(s.trim());
    }
}
3.代码调试
分别对加减,乘除,混合运算以及括号优先级的运算测试以及负数结果的测试。

代码上传
https://gitee.com/BESTI-IS-JAVA-2018/20165337

步骤 耗时 百分比
需求分析 30分钟 11.1%
设计 3小时 66.7%
代码实现 10分钟 3.7%
测试 30分钟 11.1%
分析总结 20分钟 7.4%
原文地址:https://www.cnblogs.com/y963976867/p/8687023.html