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修改为跟当前项目在一个路径下
三、实验体会与总结
- 前面的实验部分,巩固了前几周娄老师在课上强调的在目录下编译和运行子目录下的程序以及带包程序的运行知识。
- 对于后面的练习,带括号的运算对我现在的水平来说是不容易理解的,所以我只写了一个普通的四则运算程序。
- 由于未能想到四则运算的边界,所以我也没有测试其边界值。