20145221 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)
20145221 《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)
实验要求
- 使用JDK编译、运行简单的Java程序;
- 使用IDEA 编辑、编译、运行、调试Java程序。
实验内容
- 命令行下Java程序开发
- IDEA下Java程序开发、调试
- 练习(通过命令行和IDEA两种方式实现,在IDEA下练习调试程序)
- 实现四则运算,并进行测试
实验步骤(实现四则运算,并进行测试)
前期准备
- 预先安装好JDK,并配置好环境变量,相关操作在 Hello Java ! 中已经进行了说明;
- 继续下载idealC-2016.1.1,安装完毕后在IDEA界面中配置JDK,为后期运行IDEA调试程序做准备。
需求分析
- 四则运算,即要实现基本的加、减、乘、除运算法则,并使结果能在屏幕上正确输出;
- 需要一个主类,设置主函数,提供输入、输出功能,实现计算功能;
- 需要一个“计算器”类,提供“加、减、乘、除”这样一个算法,供主函数调用;
- 需要一个测试类,对基本的易错的输入实例进行测试,检验功能完整性。
设计
- 计算器类的设计:
- 该类不含主函数,仅供调用使用;
- 设计私有成员变量result和flag,result用来记录各个功能函数的计算结果,flag用来判断除法运算是否合法;
- 设计四个计算功能的函数,分别实现加减乘除功能,并通过
this.result
来返回计算结果,通过this.flag
返回判断是否合法的结果; - 设计两个取值功能的函数,因为result和flag是私有成员变量,不能由别的类直接进行取值,所以设计两个取值的函数,分别为
getResult()
和isFlag()
。
- 主类的设计:
- 首先要定义接口:
java.util.Scanner;
,提供用户输入的功能; - 定义主函数,记录三个输入变量,分别是左右操作数(double型),以及中间的运算符(字符串型);
- 定义计算器类类变量,实现调用计算器类的功能,针对不同的运算符调用不同功能的计算函数,进而实现计算;
- 将结果进行输出。
- 首先要定义接口:
- 测试类的设计:
- 对一些易错的输入实例进行测试,需要调用主类;
- 修改错误,完成测试。
代码实现 & 测试
IDEA环境下开发:
- 打开IDEA,创建包"lab01",将实验一所有代码放在该包下,便于编译运行调试;
- 分别创建
class Calculator
、class CalculatorDemo
和class CalculatorTest
; - 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;
}
}
- 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!");
}
}
}
- 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!");
}
}
- 调试
IDEA中调试很简单,
Ctrl+Shift+F10
,即可编译运行;IDEA可以边编译边纠错,所以编译运行时没有发现什么错误;
不过通过帮助同学,学到了断点调试、单步执行等方法,可以让JVM只编译你选中的部分,对其中的语法错误可以一句一句纠错,使得发现解决问题的时间大大提高,在此之前,只是按一下编译的按钮,出现错误,逐句查找,比较费时费力。
命令行下开发:
- 代码如上,在DOS命令行下编译执行该代码;
- 编译 & 执行:
在编译时因为该三个类钧属于包lab01下,所以编译时不能直接
javac *.java
,这样虽然编译可以通过,但执行的时候无论输入以下哪种代码都会出现如下报错,提示找不到或者无法加载主类Calculator:
所以在编译CalculatorDemo.java文件时,须在命令行下输入以下指令:
javac -d . *.java
,这样,JVM会把编译生成的.class文件放在文件夹lab01中,执行时输入指令:java lab01.CalculatorDemo
或java 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)的更多相关文章
- 20145314郑凯杰 《Java程序设计》实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告
20145314郑凯杰 <Java程序设计>实验一 Java开发环境的熟悉(Windows + Eclipse)实验报告 实验要求 •使用JDK编译.运行简单的Java程序: •使用Ecl ...
- 20145316《Java程序设计》实验一:Java开发环境的熟悉(Windows + IDEA)
20145316<Java程序设计>实验一:Java开发环境的熟悉(Windows + IDEA) 一.DOC命令行下Java程序开发 1.打开cmd,输入 mkdir 20145316命 ...
- 20145239 实验一 Java开发环境的熟悉(Windows + IDEA)
实验一 Java开发环境的熟悉(Windows + IDEA) 实验内容 1.使用JDK编译.运行简单的Java程序:2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验知识点 1.JV ...
- 20145301《Java程序设计》实验报告一:Java开发环境的熟悉
20145301<Java程序设计>实验报告一:Java开发环境的熟悉 课程:Java程序设计 实验名称:Java开发环境的熟悉 实验目的与要求: 1.没有Linux基础的同学建议先学习& ...
- 2018-2019-2-20175303 实验二 《Java开发环境的熟悉》实验报告
2018-2019-2-20175303 实验二 <Java开发环境的熟悉>实验报告 姓名:柴轩达 学号:20175303 班级:1753 实验课程:JAV ...
- 2018-2019-2-20175225 实验二《Java开发环境的熟悉》实验报告
姓名:张元瑞 学号:20175225 班级:1752 实验课程:JAVA程序设计 实验名称:Java面向对象程序设计 实验时间:2019.4.16 指导老师:娄嘉鹏 实验内容 测试点一 - " ...
- 20145312《Java第一次实验报告》
20145312<Java第一次实验报告> Java开发环境的熟悉(Windows+Idea) 一.实验内容 使用Idea编辑.编译.运行.调试Java程序. 使用JDK编译.运行简单的J ...
- 20145212《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDE)
20145212<Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDE) 实验内容及步骤 1.命令行下的JAVA程序开发 建立并进入实验目录: 撰写简单的Hello ...
- 20145213《Java程序设计》实验报告一:Java开发环境的熟悉(Windows+IDEA)
20145213<Java程序设计>实验报告一:Java开发环境的熟悉(Windows+IDEA) 实验要求 使用JDK编译.运行简单的Java程序. 使用IDEA编辑.编译.运行.调试J ...
随机推荐
- [原创]用Oreans UnVirtualizer还原VM代码
标题:[原创]用Oreans UnVirtualizer还原VM代码实验 作者:sungy 时间:2014-09-18 对VM一直很头痛,在逆向实践一般尽量想办法避开它,当黑盒来处理.有时候不面对她又 ...
- ubuntu 关闭显示器的命令
sleep 2s ; gnome-screensaver-command -a或sleep 2s ; xset dpms force off2秒后关闭显示器
- DNS隧道通信的检测
DNS隧道通信的检测 DNS 隧道通信 DNS 隧道通信是C&C常用的通信方式,一般常用的编码方式Base64,Binary编码,NetBios编码等,Hex编码等.且请求的Type一般都是t ...
- 使用Eclipse(以及intellij IDEA)配合JDWP对服务器上部署的代码进行调试
今天遇到了一个问题:同样的代码,在服务器上跑的时候会报空指针异常,但是在本地是没有问题的,看服务器上打印的日志只能看到异常信息,不能准确地定位到出问题的代码,于是就搜索了一下远程调试.结果还真的可以在 ...
- exports和module.exports区别
参考:module.exports与exports的区别.关于exports的总结 exports 和 module.exports 的区别 module.exports是真正的模块接口,而expor ...
- C#文件下载的几种方式
第一种:最简单的超链接方法,<a>标签的href直接指向目标文件地址,这样容易暴露地址造成盗链,这里就不说了 1.<a>标签 <a href="~/Home/d ...
- 【模块化开发】------requireJS的基本使用------【巷子】
前言 为了提高代码的复用度,开发人员会按照功能把大量的js代码分成若干文件,这样在多个页面就可以使用同一个文件了.,下面是某个网站的js引用情况 虽然代码的复用度提升了,但是缺点也体现了出来 缺点: ...
- Linux--vim编辑器和文件恢复
第五章 Vim编辑器和恢复ext4下误删除的文件-Xmanager工具 本节所讲内容: 5.1 vim的使用 5.2 实战:恢复ext4文件系统下误删除的文件 5.3 实战:使用xmanage ...
- JS实现数字千位符格式化方法
/** * [number_format 参数说明:] * @param {[type]} number [number:要格式化的数字] * @param {[type]} decimals [de ...
- 双态运维分享之二: 服务型CMDB的消费场景
近年来,CMDB在IT运维管理中的价值逐步得到认可,使用CMDB的期望值也日益增长.然而,CMDB实施和维护的高成本却一直是建设者们的痛点.那么今天,我们来探讨一下如何通过消费来持续驱动CMDB的逐步 ...