20145221 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)

实验要求

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

实验内容

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

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

前期准备

  1. 预先安装好JDK,并配置好环境变量,相关操作在 Hello Java ! 中已经进行了说明;
  2. 继续下载idealC-2016.1.1,安装完毕后在IDEA界面中配置JDK,为后期运行IDEA调试程序做准备。

需求分析

  1. 四则运算,即要实现基本的加、减、乘、除运算法则,并使结果能在屏幕上正确输出;
  2. 需要一个主类,设置主函数,提供输入、输出功能,实现计算功能;
  3. 需要一个“计算器”类,提供“加、减、乘、除”这样一个算法,供主函数调用;
  4. 需要一个测试类,对基本的易错的输入实例进行测试,检验功能完整性。

设计

  1. 计算器类的设计:

    • 该类不含主函数,仅供调用使用;
    • 设计私有成员变量resultflag,result用来记录各个功能函数的计算结果,flag用来判断除法运算是否合法;
    • 设计四个计算功能的函数,分别实现加减乘除功能,并通过this.result来返回计算结果,通过this.flag返回判断是否合法的结果;
    • 设计两个取值功能的函数,因为resultflag是私有成员变量,不能由别的类直接进行取值,所以设计两个取值的函数,分别为getResult()isFlag()
  2. 主类的设计:
    • 首先要定义接口:java.util.Scanner;,提供用户输入的功能;
    • 定义主函数,记录三个输入变量,分别是左右操作数(double型),以及中间的运算符(字符串型);
    • 定义计算器类类变量,实现调用计算器类的功能,针对不同的运算符调用不同功能的计算函数,进而实现计算;
    • 将结果进行输出。
  3. 测试类的设计:
    • 对一些易错的输入实例进行测试,需要调用主类;
    • 修改错误,完成测试。

代码实现 & 测试

IDEA环境下开发:

  1. 打开IDEA,创建包"lab01",将实验一所有代码放在该包下,便于编译运行调试;
  2. 分别创建class Calculatorclass CalculatorDemoclass CalculatorTest
  3. Calculator类代码:
    public class Calculator {
private double result;
private boolean flag = true;
public void add(double a, double b){
this.result = a + b;
}
public void subtract(double a, double b){
this.result = a - b;
}
public void multiply(double a, double b){
this.result = a * b;
}
public void divide(double a, double b){
if(b != 0)
this.result = a / b;
else
this.flag = false;
}
public double getResult(){
return result;
}
public boolean isFlag(){
return flag;
}
}
  1. CalculatorDemo类代码:
    import java.util.Scanner;
public class CalculatorDemo {
public static void main(String[] args) {
Scanner scanner1 = new Scanner(System.in);
Scanner scanner2 = new Scanner(System.in);
Scanner scanner3 = new Scanner(System.in);
Calculator calculator = new Calculator();
System.out.print("First Number: ");
double a = scanner1.nextDouble();
System.out.print("Calculate Type: ");
String type = scanner2.next();
System.out.print("Second Number: ");
double b = scanner3.nextDouble();
switch (type){
case "+":
calculator.add(a, b);
System.out.println(calculator.getResult());
break;
case "-":
calculator.subtract(a, b);
System.out.println(calculator.getResult());
break;
case "*":
calculator.multiply(a, b);
System.out.println(calculator.getResult());
break;
case "/":
calculator.divide(a, b);
if(calculator.isFlag()) {
System.out.println(calculator.getResult());
break;
}
default:
System.out.println("Error!");
}
}
}
  1. CalculatorTest类代码:
    public class CalculatorTest {
public static void main(String[] args) {
final double TEST1 = 2.7;
final double TEST2 = 0;
boolean flag = true;
Calculator calculator = new Calculator();
calculator.add(TEST1,TEST2);
if(calculator.getResult() != TEST1) {
flag = false;
System.out.println("test failed 1!");
}
calculator.subtract(TEST1,TEST2);
if(calculator.getResult() != TEST1){
flag = false;
System.out.println("test failed 2!");
}
calculator.multiply(TEST1,TEST2);
if(calculator.getResult() != TEST2) {
flag = false;
System.out.println("test failed 3!");
}
calculator.divide(TEST1,TEST2);
if(calculator.isFlag() != false) {
flag = false;
System.out.println("test failed 4!");
}
if(flag)
System.out.println("test passed!");
}
}
  1. 调试

    • IDEA中调试很简单,Ctrl+Shift+F10,即可编译运行;

    • IDEA可以边编译边纠错,所以编译运行时没有发现什么错误;

    • 不过通过帮助同学,学到了断点调试单步执行等方法,可以让JVM只编译你选中的部分,对其中的语法错误可以一句一句纠错,使得发现解决问题的时间大大提高,在此之前,只是按一下编译的按钮,出现错误,逐句查找,比较费时费力。

命令行下开发:

  1. 代码如上,在DOS命令行下编译执行该代码;
  2. 编译 & 执行:
    • 在编译时因为该三个类钧属于包lab01下,所以编译时不能直接javac *.java,这样虽然编译可以通过,但执行的时候无论输入以下哪种代码都会出现如下报错,提示找不到或者无法加载主类Calculator:

    • 所以在编译CalculatorDemo.java文件时,须在命令行下输入以下指令:javac -d . *.java,这样,JVM会把编译生成的.class文件放在文件夹lab01中,执行时输入指令:java lab01.CalculatorDemojava lab01.CalculatorTest即可运行以上文件。

分析总结(遇到问题及解决办法)

  • 拿到题目后,看见是四则运算,觉得很简单,实现加减乘除不就行了,甚至函数都不用编写,直接通过Java中的运算操作符,然后打印结果不就OK了,不过考虑到实验是实践代码的最好机会,所以就准备运用自己所学,设计一台计算器。
  • 问题一:在设计Calculator类时,其中有一个除法功能,当时没顾虑太多,最后想着如果人家输入的除数为0怎么办?这样,就必定要在divide()函数中加一些别的“特征”,来告诉调用者除法输入参数不合法!所以考虑到了常用的boolean型变量flag,先判断除数是否为0,如果为0,则不再进行除法运算,使flag置为flase;如果不为0,继续除法运算,flag为初始化的值true。这样调用者可以通过isFlag()函数的返回值来判断是否输入有误。
  • 问题二:习惯了IDEA的集成开发环境,渐渐对传统的命令行陌生了。为了代码管理的需要,我将本次实验的三个类全部放在了包lab01中,这就使得用命令行编译时要注意了。注意:不能直接使用javac命令编写,因为这三个类属于特定的包中,必须要用javac -d指令,这样编译的.class文件才能被java指令执行。
  • 问题三:仍然是命令行中出现的问题,不能单独编译一个Calculator.java文件(其中含有Calculator类变量),由于刚开始对这一点比较模糊,编译器反复提示“找不到或者无法加载主类”,最后才明白是因为Calculator类根本没有编译,JVM上哪去识别它呢,所以要将Calculator类与CalculatorDemo类一起编译才行,执行javac -d . *.java指令。

其他(感悟、思考等,可选)

  • 这是Java第一次做实验,,也是自己第一次使用对象封装调用等完成了一个简单的小程序。结果可能不重要,因为实现加减乘除并不是很难的一个程序,重要的是在实现计算器功能的同时,让我运用了平时学到的知识,将知识第一次付诸于实践。原本对书本并不理解的知识点,在这次实验中运用了一遍理解就更深刻了,比如在本次实验中用到的对对象封装的技巧,设计出了一个“计算器”,它拥有加减乘除的基本功能,同时也能对输入的对错加以简单的判断。
  • 这次实验也让我感到一些不安,因为自己并不能完全独立的完成本次实验。在代码实现的阶段中,有部分经常就忘记怎么敲了,不能确定是否如此,或者IDEA报了错,看着错误类型不知道怎么处理,只知道书中某一页好像讲了这个知识,所以自己只好重新翻课本寻求答案。这说明,在平时的学习过程中,看人家代码容易,自己手敲代码还是一件比较费力的事。读懂代码和会敲代码是两码事,所以要在读懂代码的基础上,多实践,锻炼自己敲代码的能力。

PSP(Personal Software Process)时间:

步骤 耗时 百分比
需求分析 10min 10%
设计 20min 20%
代码实现 40min 40%
测试 15min 15%
分析总结 15min 15%

参考资料

20145221 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)的更多相关文章

  1. 20145314郑凯杰 《Java程序设计》实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告

    20145314郑凯杰 <Java程序设计>实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告 实验要求 •使用JDK编译.运行简单的Java程序: •使用Ecl ...

  2. 20145316《Java程序设计》实验一:Java开发环境的熟悉(Windows + IDEA)

    20145316<Java程序设计>实验一:Java开发环境的熟悉(Windows + IDEA) 一.DOC命令行下Java程序开发 1.打开cmd,输入 mkdir 20145316命 ...

  3. 20145239 实验一 Java开发环境的熟悉(Windows + IDEA)

    实验一 Java开发环境的熟悉(Windows + IDEA) 实验内容 1.使用JDK编译.运行简单的Java程序:2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验知识点 1.JV ...

  4. 20145301《Java程序设计》实验报告一:Java开发环境的熟悉

    20145301<Java程序设计>实验报告一:Java开发环境的熟悉 课程:Java程序设计 实验名称:Java开发环境的熟悉 实验目的与要求: 1.没有Linux基础的同学建议先学习& ...

  5. 2018-2019-2-20175303 实验二 《Java开发环境的熟悉》实验报告

    2018-2019-2-20175303 实验二 <Java开发环境的熟悉>实验报告 姓名:柴轩达       学号:20175303     班级:1753       实验课程:JAV ...

  6. 2018-2019-2-20175225 实验二《Java开发环境的熟悉》实验报告

    姓名:张元瑞 学号:20175225 班级:1752 实验课程:JAVA程序设计 实验名称:Java面向对象程序设计 实验时间:2019.4.16 指导老师:娄嘉鹏 实验内容 测试点一 - " ...

  7. 20145312《Java第一次实验报告》

    20145312<Java第一次实验报告> Java开发环境的熟悉(Windows+Idea) 一.实验内容 使用Idea编辑.编译.运行.调试Java程序. 使用JDK编译.运行简单的J ...

  8. 20145212《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDE)

    20145212<Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDE) 实验内容及步骤 1.命令行下的JAVA程序开发 建立并进入实验目录: 撰写简单的Hello ...

  9. 20145213《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)

    20145213<Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDEA) 实验要求 使用JDK编译.运行简单的Java程序. 使用IDEA编辑.编译.运行.调试J ...

随机推荐

  1. 【mysql】查看版本的四种方法

    1:在终端下:mysql -V. 以下是代码片段: [test@login ~]$ mysql -V mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux- ...

  2. bootstrap之

    一.字体图标 <button type="button" class="btn btn-primary btn-lg"> <span clas ...

  3. swiper的延迟加载(非官网方法)

    网上找的: https://github.com/nolimits4web/Swiper/issues/626 var tabsSwiper = new Swiper('#games-content' ...

  4. 条件注释判断IE浏览器版本

    lt,lte,gt,gte分别表示什么 lt:小于当前版本 lte:小于或等于当前版本,包括本身 gt:大于当前版本 gte:大于或等于当前版本,包括本身 使用格式 // 如IE9以下(不包括IE9加 ...

  5. strace命令的使用

    author: headsen  chen date: 2018-08-28   21:25:48 跟踪一个命令的过程: [root@zabbix-test ~]# yum -y install st ...

  6. 【BZOJ2595】[Wc2008]游览计划 斯坦纳树

    [BZOJ2595][Wc2008]游览计划 Description Input 第一行有两个整数,N和 M,描述方块的数目. 接下来 N行, 每行有 M 个非负整数, 如果该整数为 0, 则该方块为 ...

  7. 【BZOJ4922】[Lydsy六月月赛]Karp-de-Chant Number 贪心+动态规划

    [BZOJ4922][Lydsy六月月赛]Karp-de-Chant Number Description 卡常数被称为计算机算法竞赛之中最神奇的一类数字,主要特点集中于令人捉摸不透,有时候会让水平很 ...

  8. [Bootstrap] install Bootstrap framework in window 7 by npm

    Install with npm You can also install Bootstrap using npm: $ npm install bootstrap require('bootstra ...

  9. SSL安装方法一:在Windows Server 2008安装SSL证书(IIS 7.0)

    购买的是GlobalSign 公司的通配符域名型SSL 大致的意思就是“通配符公用名填写*.域名.com,这个下面的所有子域名是不受数量限制的,*可以换成任意字符” 1 生成数字证书签名请求文件(CS ...

  10. postgresql----SELECT

    示例1.简单查询 使用*查询表所有的字段,也可以指定字段名查询 test=# select * from tbl_insert; a | b ---+---- | sd | ff ( rows) te ...