zoukankan      html  css  js  c++  java
  • 20145211 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)

    实验要求

    • 使用JDK编译、运行简单的Java程序;
    • 使用IDEA 编辑、编译、运行、调试Java程序。

    实验内容

    • 命令行下Java程序开发
    • IDEA下Java程序开发、调试
    • 练习(通过命令行和IDEA两种方式实现,在IDEA下练习调试程序)
    • 实现四则运算,并进行测试

    实验步骤(实现四则运算,并进行测试)

    前期准备

    1. 第一周的博客里有关于前期环境设置的详细操作,这里不再赘述 20145211 《Java程序设计》第1周学习总结——小荷才露尖尖角 中已经进行了说明;
    2. 我使用的是IDEA,其实不管你用的什么软件,是指并没有变化,纵使风云变幻,规律却万变不离其宗。

    代码一

    • 这是我在实验课上设计的一个比较简单直接的代码,虽有不足,但麻雀虽小,五脏俱全。

    需求分析

    1. 四则运算,即要实现基本的加、减、乘、除运算法则,并正确输出运算结果;
    2. 能够排除用户一些错误的输入;
    3. 能够持续运算,直到用户退出。

    设计

    1. 用户循环输入的设计,通过一个```do-while``·语句实现;
    2. 定义接口:java.util.Scanner;,提供用户输入的功能;
    3. 不同运算功能的实现,通过switch语句,根据用户输入运算符号的不同调用不同的功能
    4. 字符的输入,需要cr = (char) System.in.read();,同时还要用```catch````避免异常的出现

    代码实现 & 测试

    • 代码
    public class New {
        public static void main(String[] args) {
            double num1,num2;
            char cr = 0;
            String condition="";
            do {
                Scanner input = new Scanner(System.in);
                System.out.print("请输入第一个数:");
                num1 = input.nextDouble();
                System.out.print("请输入第二个数:");
                num2 = input.nextDouble();
                System.out.print("请输运算符号:");
                try {
                    cr = (char) System.in.read();
                } catch (IOException e) {
                    System.out.println("error!");
                }
                switch (cr) {
                    case '+':
                        System.out.print(num1 + "+" + num2 + "=" + (num1 + num2));
                        break;
                    case '-':
                        System.out.print(num1 + "-" + num2 + "=" + (num1 - num2));
                        break;
                    case '*':
                        System.out.print(num1 + "*" + num2 + "=" + (num1 * num2));
                        break;
                    case '/': {
                        if (num2 == 0) {
                            System.out.println("被除数不能为0");
                        } else {
                            System.out.println(num1 + "/" + num2 + "=" + (num1 / num2));
                        }
                    }
                    break;
                    default:
                        System.out.println("无法识别改运算符");
                }
                System.out.print("是否继续?Yes:继续,任意字符:结束");
                condition = input.next();
            }while("Yes".equals(condition));
        }
    }
    
    • 测试
      IDEA中调试很简单,run一下就行了,或者快捷键Ctrl+Shift+F10,即可编译运行;
      IDEA在你编写的时候就会告诉你错误,否则所有的程序都无法执行(这个,有好处,有坏处,找不到错的,,只有删掉。。)

    代码二

    • 后来我觉得这个代码不易后期的修改,且没有测试,所以我把运算那一块写了一个yusuan类,并专门写了一个简单的测试类

    需求分析

    1. 在代码一的基础上,实现模块的划分;
    2. 对一些常见用例进行测试。

    设计

    1. 运算:
      yunsuan类中定义4个函数,返回其操作的结果
    2. 测试:
      对一些常见的特殊情况进行测试

    代码实现 & 测试

    IDEA环境下开发:

    • Yunsuan
    public class Yunsuan {
        public double plus(double a, double b){
            return  a + b;
        }
        public double sub(double a, double b){
            return a - b;
        }
        public double mul(double a, double b){
            return a * b;
        }
        public double divide(double a, double b){
            return a/b;
        }
    
    }
    
    • New1
    package lab01;
    
    import java.util.Scanner;
    import java.lang.String;
    import java.io.IOException;
    
    
    public class New1 {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            double num1, num2;
            Yunsuan go = new Yunsuan();
            String condition = "";
            do {
                System.out.print("please input the first number:");
                num1 = input.nextDouble();
                System.out.print("please input the second number:");
                num2 = input.nextDouble();
                System.out.print("please input the calculator char:");
                char cr = 0;
                try {
                    cr = (char) System.in.read();
                } catch (IOException e) {
                    System.out.println("error!");
                }
                switch (cr) {
                    case '+':
                        System.out.println(num1 + "+" + num2 + "=" + go.plus(num1, num2));
                        break;
                    case '-':
                        System.out.println(num1 + "-" + num2 + "=" + go.sub(num1, num2));
                        break;
                    case '*':
                        System.out.println(num1 + "*" + num2 + "=" + go.mul(num1, num2));
                        break;
                    case '/': {
                        if (num2 == 0) {
                            System.out.println("the divided number can't be zero");
                        } else {
                            System.out.println(num1 + "/" + num2 + "=" + go.divide(num1, num2));
                        }
                    }
                    break;
                    default:
                        System.out.println("can't identify the char");
                }
                System.out.println("continue?Yes:continue,any other char:exit");
                condition = input.next();
            } while ("Yes".equals(condition));
        }
    }
    
    }
    
    • Test
    package lab01;
    
    import java.util.Scanner;
    import java.lang.String;
    import java.io.IOException;
    
    
    public class New1 {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            double num1, num2;
            Yunsuan go = new Yunsuan();
            String condition = "";
            do {
                System.out.print("please input the first number:");
                num1 = input.nextDouble();
                System.out.print("please input the second number:");
                num2 = input.nextDouble();
                System.out.print("please input the calculator char:");
                char cr = 0;
                try {
                    cr = (char) System.in.read();
                } catch (IOException e) {
                    System.out.println("error!");
                }
                switch (cr) {
                    case '+':
                        System.out.println(num1 + "+" + num2 + "=" + go.plus(num1, num2));
                        break;
                    case '-':
                        System.out.println(num1 + "-" + num2 + "=" + go.sub(num1, num2));
                        break;
                    case '*':
                        System.out.println(num1 + "*" + num2 + "=" + go.mul(num1, num2));
                        break;
                    case '/': {
                        if (num2 == 0) {
                            System.out.println("the divided number can't be zero");
                        } else {
                            System.out.println(num1 + "/" + num2 + "=" + go.divide(num1, num2));
                        }
                    }
                    break;
                    default:
                        System.out.println("can't identify the char");
                }
                System.out.println("continue?Yes:continue,any other char:exit");
                condition = input.next();
            } while ("Yes".equals(condition));
        }
    }
    
    
    • 测试
      在同学的指导下,掌握了断点调试单步执行等方法,可以逐句编译,这大大简化了找错的难度,并且易于后期的维护

    命令行下开发:

    1. 第一个我忽略的问题是,IDEA中可以输出中文,然而JDK中这是一个错误!

    2. 第二个我犯错的是,应该先编译子类,再编译父类

    3. 终于成功了

    分析总结与实验体会(感悟、思考等)

    • 刚听说模5余1的同学要实现四则运算,当时就傻了,这个的多难!!因为我原来在ACM里做过一道题其基本功能就是实现四则运算,用到什么波兰排序。。后来发现,我想多了,只是简单地实现四则运算,并不是一个表达式(好开心)
    • 后来,就一马平川,switch语句,直接KO;然而我发现,在与别人的交流中,我发现我这个太弱了,在之前的基础上讲几个模块剥了出来,并进行了简单的测试
    • 还有,我发现IDEA用的太爽,换回命令行之后,之前许多注意的细节都忘得差不多了,这应该是温水煮青蛙吧。。这种选择性失忆的直接后果就是我花了将近1个小时的时间在调试上,自己又急,还搞不出来。。简直了。。。还好我有阿Q精神,我会安慰自己,,“天将降……”。
    • 言归正传,此次试验可以看出,扎实的基础才能让你兵来将当水来土掩,所以千万不要好高骛远!

    PSP(Personal Software Process)时间:

    步骤 耗时 百分比
    需求分析 10min 5%
    设计 10min 5%
    代码实现 60min 32%
    测试 75min 40%
    分析总结 30min 16%

    参考资料

  • 相关阅读:
    opensuse字符和图形界面
    Eclipse编辑器小手段
    切换运行时用户以及用户组
    PHP安装和配置
    Linux程序资源限制简述
    test2234343
    找回Svn和Git不见的文件图标
    SourceInsight使用技巧
    Javascript数组使用方法
    MySQL安装和配置
  • 原文地址:https://www.cnblogs.com/nostalgia-/p/5376376.html
Copyright © 2011-2022 走看看