实验要求

  1. 使用JDK编译、运行简单的Java程序;

  2. 使用IDEA 编辑、编译、运行、调试Java程序。

实验内容

命令行下Java程序开发

  • 打开windows下的cmd → 输入cd Code命令进入Code目录 → 输入md 20155321test建立以自己学号命名的文件夹 → 输入cd 2015531`test进入文件夹 → 输入md exp1建立“实验一”文件夹 → 输入cd exp1进入“实验一”文件夹

  • 利用vim编辑器编辑java程序并在命令行环境下进行编译、运行

IDEA下Java程序开发、调试

  • 建立HelloJDB类进行代码的调试:

  • 在需要的地方设置断点

  • 点击dubug进行单步调试

  • 当循环内部出现问题时,可在相应的行数设置断点并右击,在出现的对话框里输入自己需要调试的数值,例如i==50,再使用快捷键F9即可得到运行结果。

实现四则运算,并进行测试

前期准备

  • 安装JDK并配置环境变量
  • 下载IEDA,安装完毕后在IDEA界面中配置JDK,为后期运行IDEA调试程序做好准备

需求分析

  • 四则运算,即实现基本的加减乘除运算法则,最后使结果能在屏幕上正确输出
  • 需要一个主类设置主函数,利用主函数来调用其他类实现输入与计算功能,注意主函数尽量简洁
  • 需要一个“计算器”类,提供操作数的输入接口,供主函数调用
  • 需要一个“四则运算”类,专门针对加减乘除运算进行处理,此类被“计算器”类调用

设计

  • 四则运算类的设计
  1. 专门被计算器类进行调用,接收计算器类向此类传递的2个操作数和1个操作符

  2. 根据不同的操作符进行运算,并输出结果

  • 计算器类的设计
  1. 声明java.util.Scanner;以提供用户输入2个操作数和1个操作符的功能;

  2. 声明java.math.BigDecimal;,具体原因后面进行分析

  3. 该类被主类调用使用

  4. 该类调用四则运算类,向四则运算类传递用户输入的值

  • 主类的设计
  1. 因为在计算器类中已经把所有的功能进行了封装,因此主类只需要创建一个计算器类对象

  2. 创建好对象后只需调用此类中的方法即可

代码实现 & 测试

IDEA环境下开发
  • 打开IDEA,将实验一所有代码放在exp1包下,便于编译运行调试
  • 分别创建class SiZeYunSuanclass Calculatorclass CalculatorTest
  • SiZeYunSuan代码
class SiZeYunSuan {
private BigDecimal a;
private BigDecimal b;
private String c; void fun(BigDecimal a, BigDecimal b, String c) {
switch (c) {
case "+":
System.out.println(a.add(b));
break;
case "-":
System.out.println(a.subtract(b));
break;
case "*":
System.out.println(a.multiply(b));
break;
case "/":
if (b.equals(0))
System.out.println("Error !");
else {
System.out.println(a.divide(b));
break;
}
default:
System.out.println("Error!");
} } }
  • Calculator代码
class Calculator{
private BigDecimal a;
private BigDecimal b;
private String c; void seta(BigDecimal a){
a = this.a;
} BigDecimal geta() {
return a;
} void setb(BigDecimal b){
b = this.b;
} BigDecimal getb() {
return b;
} void setc(String c){
c = this.c;
} String getc() {
return c;
} void printFuntion(){ Scanner scanner1 = new Scanner(System.in); //第一个操作符
Scanner scanner2 = new Scanner(System.in); //第二个操作符
Scanner scanner3 = new Scanner(System.in); //第三个操作符 System.out.println("请输入第一个操作数");
a = scanner1.nextBigDecimal();
System.out.println("请输入第二个操作数");
b = scanner2.nextBigDecimal();
System.out.println("请输入操作符");
c = scanner3.next(); SiZeYunSuan siZeYunSuan = new SiZeYunSuan();
siZeYunSuan.fun(a,b,c);
}
}
  • CalculatorTest(主类,包含主函数)代码
public class CalculatorTest {
public static void main(String[] args) {
Calculator calculator = new Calculator();
calculator.printFuntion();
}
}
  • 调试
  1. 组合键Ctrl+Shift+F10即可编译运行

  1. 在一开始调试的时候,输入类似的值时无法得到一个精确的答案,例如答案应是0.5的时候程序显示的结果却是0.499999,结合课本的知识我知道因为我把操作数的类型定义为double型,而这是不精确的。在调试下我便使用BigDecimal类把数据进行一定的处理并使用这个类中原本就存在的加减乘除函数,最终便可得到精确答案

命令行下开发
  • 代码一样,在DOS命令行下编译执行该代码
  • 在命令行下运行出现了乱码问题

看了20155303同学的博客知道因为windows下默认的编码方式与IDEA设置的编码方式不同,将编码方式转为UTF-8即可成功运行。

分析总结(遇到问题及解决办法)
  • 此次我的题目是四则运算,因为之前有用C语言编过相关的程序,所以刚开始编写的时候还觉得挺简单的。但是在真正编程的时候就遇到了一些问题,通过反复尝试最终调试成功。

  • 问题一:在四则运算中若输入double型的数据,计算的结果可能不够精确

    解决方案:根据书本上介绍过的方法,利用BigDecimal进行封装

  • 问题二:在是命令行中出现了乱码问题,

    解决方案:看了同学的博客后明白如何解决

其他

  • 第一次的Java实验是我第一次封装对象并调用对象完成了一个简单的小程序。我发现在自己看到题目后思考和编程的过程中都更加倾向于面向过程,而不是面向对象。可能之前一直在使用C语言以及目前除了Java课外其它的课均是使用C语言进行编程,因此很容易编程面向过程的样子,特别是本次实验的内容也不是很难,对面向对象的编程方式,把功能封装成对象再调用对象这种模式有些陌生,之后还要改变一下思考模式

  • 本次实验总的来说不是很困难,但是也提醒了我一件事。之前看书的时候看别人的代码觉得不难,但是在自己敲代码的过程中却发现这里有问题,那里又不确定,我觉得这个的原因一方面是看代码始终和敲代码之间有一定的差距,一方面是我们目前看的代码量也比较小。之后的学习中也要多注意这个问题

PSP(Personal Software Process)时间

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

20155321 《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. 20155320《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    20155320<Java程序设计>实验一(Java开发环境的熟悉)实验报告 实验内容及步骤 (一)命令行下Java程序开发 步骤一:首先在cmd中输入d:和cd ljq20155320进 ...

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

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

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

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

随机推荐

  1. HTTP协议图--与 HTTP 协作的 Web 服务器

    HTTP 通信时,除客户端和服务器外,还有一些用于协助通信的应用程序.如下列出比较重要的几个:代理.缓存.网关.隧道.Agent 代理. 1.代理   代理 HTTP 代理服务器是 Web 安全.应用 ...

  2. HTTP协议图--HTTP 协议基础

    1.通过请求和响应的交换达成通信 应用 HTTP 协议时,必定是一端担任客户端角色,另一端担任服务器端角色.仅从一条通信线路来说,服务器端和客服端的角色是确定的.HTTP 协议规定,请求从客户端发出, ...

  3. [T-ARA][거짓말(Part.1)][谎言(Part.1)]

    歌词来源:http://music.163.com/#/song?id=5403062 作曲 : 赵英秀 [作曲 : 赵英秀] 作词 : 安英民 [作词 : 安英民] 사랑한단 거짓말 보고싶을거란 ...

  4. PhoneGap API 之事件处理

    一. deviceready 事件 1.在使用 PhoneGap 开发应用时,deviceready 事件是非常常用的.这一事件在设备的本地 环境和页面完全加载完成之后才触发 2.注意:此事件一般晚于 ...

  5. 【[HEOI2016/TJOI2016]排序】

    巧妙思路题 有一个重要的思想就是把大于某一个数的数都变成\(1\),小于这个数的都变成\(0\),这个只有\(0\)和\(1\)的序列就很好处理了 由于我们只需要在最后求出一个位置上是什么数就可以了, ...

  6. 【[IOI2005]Riv 河流】

    趁魏佬去英语演讲了,赶快%%%%%%%%%%%%%%魏佬 基本上是照着魏佬的代码写的 这其实还是一个树上背包 我们用\(dp[i][j][k]\)表示在以\(i\)为根的子树里,我们修建\(k\)个伐 ...

  7. mvc项目中Controller执行完毕重定向到html的一个页面中

    String ip = request.getLocalAddr(); //取得服务器IP int port = request.getLocalPort(); //取得服务器端口 String ur ...

  8. LeetCode31.下一个排列 JavaScript

    实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须原地修改,只允许使用额外常数空间. ...

  9. Runtime - ② - NSObject类

    首先,我们都知道NSObject是大多数类的根类,但是,这个类的是怎么实现的呢?我们可以去下载开源的Runtime源码,探究下NSObject类的实现. 1. NSObject.h文件 我们可以直接使 ...

  10. Python-常见错误梳理

    1. takes exactly 1 argument (2 given) 出现此错误一般是在某对象调用类的某方法时出现.因为在python中某类的实例对象调用方法时,是首先将自身作为一个参数传入此方 ...