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 ...
随机推荐
- 【mysql】查看版本的四种方法
1:在终端下:mysql -V. 以下是代码片段: [test@login ~]$ mysql -V mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux- ...
- bootstrap之
一.字体图标 <button type="button" class="btn btn-primary btn-lg"> <span clas ...
- swiper的延迟加载(非官网方法)
网上找的: https://github.com/nolimits4web/Swiper/issues/626 var tabsSwiper = new Swiper('#games-content' ...
- 条件注释判断IE浏览器版本
lt,lte,gt,gte分别表示什么 lt:小于当前版本 lte:小于或等于当前版本,包括本身 gt:大于当前版本 gte:大于或等于当前版本,包括本身 使用格式 // 如IE9以下(不包括IE9加 ...
- strace命令的使用
author: headsen chen date: 2018-08-28 21:25:48 跟踪一个命令的过程: [root@zabbix-test ~]# yum -y install st ...
- 【BZOJ2595】[Wc2008]游览计划 斯坦纳树
[BZOJ2595][Wc2008]游览计划 Description Input 第一行有两个整数,N和 M,描述方块的数目. 接下来 N行, 每行有 M 个非负整数, 如果该整数为 0, 则该方块为 ...
- 【BZOJ4922】[Lydsy六月月赛]Karp-de-Chant Number 贪心+动态规划
[BZOJ4922][Lydsy六月月赛]Karp-de-Chant Number Description 卡常数被称为计算机算法竞赛之中最神奇的一类数字,主要特点集中于令人捉摸不透,有时候会让水平很 ...
- [Bootstrap] install Bootstrap framework in window 7 by npm
Install with npm You can also install Bootstrap using npm: $ npm install bootstrap require('bootstra ...
- SSL安装方法一:在Windows Server 2008安装SSL证书(IIS 7.0)
购买的是GlobalSign 公司的通配符域名型SSL 大致的意思就是“通配符公用名填写*.域名.com,这个下面的所有子域名是不受数量限制的,*可以换成任意字符” 1 生成数字证书签名请求文件(CS ...
- postgresql----SELECT
示例1.简单查询 使用*查询表所有的字段,也可以指定字段名查询 test=# select * from tbl_insert; a | b ---+---- | sd | ff ( rows) te ...