20165228 实验一 Java开发环境的熟悉
20165228 实验一 Java开发环境的熟悉
一、实验内容及步骤
(一)使用JDK编译、运行简单的Java程序
- 命令行下Java程序开发
1.用VrtualBox打开Linux虚拟机
2.使用Alt+Ctrl+T
来打开命令行
3.使用mkdir java
创建一个名为java的目录,使用cd java
进入该目录
4.使用mkdir 20165228
创建名为学号的目录,使用cd 20165228
进入该目录
5.在目录20165228下创建第一个实验目录,并进入该目录
6.创建相应的bin和src文件夹来对.java和.class进行分类
7.使用vim Hello.java
来编辑该程序,编辑完成后,使用mv Hello.java src
,将编辑好的程序移动到事先创建的src文件夹下
8.使用javac -d bin src/Hello.java
编译程序,并将得到的class文件输出到bin目录下。然后使用java -cp bin szk.Hello
运行带包的程序
(二)IDEA下Java程序开发、调试
1.进入IDEA创建项目后,右键src
-->New
-->Java class
2.输入HelloJDB,选择OK
3.输入代码并点击run
(快捷键Alt+Shift+F10
)
4.在第6行设置断点后,进行Debug
(快捷键Alt+Shift+F9
),程序会运行到第6行时截止,可以观察到此时的各个变量值的情况
5.此时可以进行Step into
(快捷键F7)和Step over
(快捷键F8)继续单步执行
- 以下是其区别
step into
(快捷键F7):单步执行,遇到子函数就进入并且继续单步执行
step over
(快捷键F8):是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步
step out
(Shift+F8):当单步执行到子函数内时,用step out就可以执行完子函数余下部分,并返回到上一层函数。
6.在第9行再设置一个断点,使用Resume Program
(快捷键F9)来跳过已确认没有问题的代码段
7.设置条件断点,然后运行,得到在该条件下的结果
(三)练习:实现简单四则运算(能支持分数,加减乘除,支持括号),并进行测试(正常情况,异常情况,边界情况)
代码如下:
import java.util.Scanner;
import java.math.BigDecimal;
public class Calculator {
public static void main(String[] args) {
String name1="+";
String name2="-";
String name3="*";
String name4="/";
Scanner scanner=new Scanner(System.in);
System.out.printf("选择四则运算:");
String str=new String(scanner.nextLine());
if(name1.equals(str)){
System.out.printf("请输入需要运算的两个数字,以空格分割:");
BigDecimal a=new BigDecimal(scanner.nextFloat());
BigDecimal b=new BigDecimal(scanner.nextFloat());
System.out.printf(a+"+"+b +"结果是%f\n",a.add(b));
}
else if(name2.equals(str)){
System.out.printf("请输入需要运算的两个数字,以空格分割:");
BigDecimal a=new BigDecimal(scanner.nextFloat());
BigDecimal b=new BigDecimal(scanner.nextFloat());
System.out.printf(a+"-"+b +"结果是%f\n",a.subtract(b));
}
else if(name3.equals(str)){
System.out.printf("请输入需要运算的两个数字,以空格分割:");
BigDecimal a=new BigDecimal(scanner.nextFloat());
BigDecimal b=new BigDecimal(scanner.nextFloat());
System.out.printf(a+"*"+b +"结果是%f\n",a.multiply(b));
}
else if(name4.equals(str)){
System.out.printf("请输入需要运算的两个数字,以空格分割:");
BigDecimal a=new BigDecimal(scanner.nextFloat());
BigDecimal b=new BigDecimal(scanner.nextFloat());
System.out.printf(a+"/"+b +"结果是%f\n",a.divide(b));
}
else System.out.printf("输入错误");
}
}
- 命令行调试
正常情况:
异常情况:
- IDEA调试
正常情况:
异常情况:
二、实验中遇到的问题
- 问题1:在设计完代码后, 调试时提示“java.lang.ClassNotFoundException: Calculator”
解决方法:
1.确认你的类库在系统的CLASSPATH下面,如果是Tomcat,则可以放在tomcat/lib/目录下面。
2 删除重复的类库,只保留最新的 - 问题2:用IDEA调试代码时,会提示找不到主类,让我很疑惑。因为命令行调试时完全正常
解决方法:
IDEA环境的问题,在项目的project structure 中,先将项目指定JDK ,然后在项目的PATH 中,将path修改为跟当前项目在一个路径下
三、实验体会与总结
- 前面的实验部分,巩固了前几周娄老师在课上强调的在目录下编译和运行子目录下的程序以及带包程序的运行知识。
- 对于后面的练习,带括号的运算对我现在的水平来说是不容易理解的,所以我只写了一个普通的四则运算程序。
- 由于未能想到四则运算的边界,所以我也没有测试其边界值。
20165228 实验一 Java开发环境的熟悉的更多相关文章
- 20145205 实验一 Java开发环境的熟悉
实验内容 命令行下Java程序开发 IDEA下Java程序开发.调试 练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序) 实现凯撒密码,并进行测试 实验要求 使用JDK编译 ...
- 实验一 Java开发环境的熟悉
实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没 ...
- 20145308刘昊阳 《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20145308刘昊阳 <Java程序设计>实验一报告 实验名称 Java开发环境的熟悉 实验内容 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试J ...
- 实验一Java开发环境的熟悉
实验一Java开发环境的熟悉 实验内容 •命令行下Java程序开发 •IDEA下Java程序开发.调试 •练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序) •实现凯撒密码 ...
- 20145225《Java程序设计》实验一 Java开发环境的熟悉(Linux + Eclipse)
20145225<Java程序设计> 实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑 ...
- 20145208实验一 Java开发环境的熟悉
20145208实验一 Java开发环境的熟悉 使用JDK编译.运行简单的java程序 命令行下程序开发 在命令行下建立实验目录,然后创建并进入该目录后的子目录. 编译并运行一个代码 使用IDEA 编 ...
- 实验一 Java开发环境的熟悉(Linux + Eclipse)
学号 20175206 实验一 <Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实 ...
- 实验一 Java开发环境的熟悉(Linux + Idea) 20175301李锦然
https://gitee.com/ShengHuoZaiDaXue/20175301.git 实验一 Java开发环境的熟悉(Linux + Idea) 实验内容 1.使用JDK编译.运行简单的Ja ...
- 2018-2019-2 实验一 Java开发环境的熟悉
实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA编辑.编译.运行.调试Java程序 实验知识点 1. JVM.JRE.JDK的安装位置与区别: 2. 命令行运行javac:ja ...
随机推荐
- ActiveMQ 配置jdbc主从
使用 jdbc 方式配置主从模式,持久化消息存放在数据库中. 在同一时刻,只有一个 master broker,master 接受客户端的连接,slave 不接受连接.当 master 因为关机而下线 ...
- ActiveMQ异步分发消息
org.apache.activemq.ActiveMQConnection 类中有个参数: protected boolean dispatchAsync=true; 这个参数的含义到底是什么? 使 ...
- daal4py 随机森林模型训练mnist并保存模型给C++ daal predict使用
# daal4py Decision Forest Classification Training example Serialization import daal4py as d4p import ...
- js 获取数组重复的元素
//获取数组重复的元素 function refrain(arr) { var tmp = []; if(Array.isArray(arr)) { arr.concat().sort().sort( ...
- powerdesidgner1
'******************************************************************************'* File: comment2name ...
- laravel Eloquent 查询数据库判断获取的内容是否为空
原文地址:https://www.cnblogs.com/love-snow/articles/7205338.html 在使用 Laravel Eloquent 模型时,我们要判断取出的结果集是否为 ...
- do_bootrk
1. LMB (logical memory blocks) lmb为uboot下的一种内存管理机制,用于管理镜像的内存.lmb所记录的内存信息最终会传递给kernel.在/include/lmb.h ...
- .clearfix:after(清除浮动)中各个属性及值详细解说
清除浮动.clearfix:after一词,从事web前端的朋友们对此不会陌生吧,下面为大家介绍的是.clearfix:after中用到的所有属性及值的含义,对此感兴趣的朋友可以参考下哈想,希望对大家 ...
- 认识微软Visual Studio Tools for AI
认识微软Visual Studio Tools for AI 微软已经发布了其 Visual Studio Tools for AI 的测试版本,这是微软 Visual Studio 2017 I ...
- [BZOJ1588]营业额统计
Problem 每次给你一个数,找出前面的数与这个数的差的绝对值的最小值 Solution Splay Notice 找不到前驱和后继时,会出错. Code #include<cmath> ...