20155216 实验一《Java开发环境的熟悉》实验报告

实验内容

1.使用JDK编译、运行简单的Java程序。
2.使用idea 编辑、编译、运行、调试Java程序。
3、实现四则运算,并进行测试。
4、实现带有“()”的“+”,“-”,“*”,“/”简单运算,运算结果为小数。

实验知识点

  1. JVM、JRE、JDK的安装位置与区别;
  2. 命令行运行javac;java;javac -cp; java -cp;
  3. PATH,CLASSPATH,SOURCEPATH的设定方法与应用;
  4. 包管理:package;import;javac -d
  5. idea管理Java项目,调试:断点、单步执行等;
  6. Java基础语法:类型与类型转换;变量;运算符;流程控制等;
  7. JDK帮助文档的使用。

实验目的与要求

1、通过命令行和idea两种方式实现。
2、完成实验、撰写实验报告。
3、实验报告中统计自己的PSP(Personal Software Process)时间。

实验设计说明

1、由键盘输入需要计算的四则运算式并回车。
2、可连续输入需计算的四则运算式,输入“#”结束程序。
3、输出结果若为小数,则最多保留六位小数;若为整数,则保留两位小数。
4、输入的运算式若带有“()”,则“()”必须匹配。

实验源代码

package cc.daima;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
 
 
public class Operation {
     
    public static void main(String[] args){
         
//      String str=" 11 12 13 56 ";
//      String[] data=str.split("\\s");
//      for(int i=0;i<data.length;i++){
//          System.out.println(data[i]);
//      }
         
        BufferedReader reader=null;
        InputStreamReader inputStreamReader=null;
//      ArrayList<String>opt=new ArrayList<String>();
        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());
    }
}

设计思路

先定义结束运算程序的字符“#”,用ArraysList收集字符。再定义所有的运算符,以及处理括号不匹配问题。最后用连续的if语句定义运算。其中用try-catch组合处理运算输入和运算过程中的各种问题,以保证程序的稳定和四则运算的逻辑规则。

实验测试结果截图

实验体会

通过对代码的编译调试过程,更加深刻地理解了异常处理方法和数据的收集。
能更加熟练地使用idea断点调试。
对java的开发环境更为了解并适应。

实验报告中统计自己的PSP(Personal Software Process)时间

posted @ 2017-04-09 15:26  Lee.X  阅读(133)  评论(0编辑  收藏  举报