20165228 实验一 Java开发环境的熟悉

时间:2021-09-06 17:42:29

20165228 实验一 Java开发环境的熟悉

一、实验内容及步骤

(一)使用JDK编译、运行简单的Java程序

  • 命令行下Java程序开发

    1.用VrtualBox打开Linux虚拟机

    20165228 实验一 Java开发环境的熟悉

    2.使用Alt+Ctrl+T来打开命令行

    20165228 实验一 Java开发环境的熟悉

    3.使用mkdir java创建一个名为java的目录,使用cd java进入该目录

    20165228 实验一 Java开发环境的熟悉

    4.使用mkdir 20165228创建名为学号的目录,使用cd 20165228进入该目录

    20165228 实验一 Java开发环境的熟悉

    5.在目录20165228下创建第一个实验目录,并进入该目录

    20165228 实验一 Java开发环境的熟悉

    6.创建相应的bin和src文件夹来对.java和.class进行分类

    20165228 实验一 Java开发环境的熟悉

    7.使用vim Hello.java来编辑该程序,编辑完成后,使用mv Hello.java src,将编辑好的程序移动到事先创建的src文件夹下

    20165228 实验一 Java开发环境的熟悉

    20165228 实验一 Java开发环境的熟悉

    8.使用javac -d bin src/Hello.java编译程序,并将得到的class文件输出到bin目录下。然后使用java -cp bin szk.Hello运行带包的程序

    20165228 实验一 Java开发环境的熟悉

(二)IDEA下Java程序开发、调试

1.进入IDEA创建项目后,右键src-->New-->Java class

20165228 实验一 Java开发环境的熟悉

2.输入HelloJDB,选择OK

20165228 实验一 Java开发环境的熟悉

3.输入代码并点击run(快捷键Alt+Shift+F10

20165228 实验一 Java开发环境的熟悉

4.在第6行设置断点后,进行Debug(快捷键Alt+Shift+F9),程序会运行到第6行时截止,可以观察到此时的各个变量值的情况

20165228 实验一 Java开发环境的熟悉

20165228 实验一 Java开发环境的熟悉

5.此时可以进行Step into(快捷键F7)和Step over(快捷键F8)继续单步执行

  • 以下是其区别

    step into(快捷键F7):单步执行,遇到子函数就进入并且继续单步执行

    step over(快捷键F8):是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步

    step out(Shift+F8):当单步执行到子函数内时,用step out就可以执行完子函数余下部分,并返回到上一层函数。

    20165228 实验一 Java开发环境的熟悉

    6.在第9行再设置一个断点,使用Resume Program(快捷键F9)来跳过已确认没有问题的代码段

    20165228 实验一 Java开发环境的熟悉

    7.设置条件断点,然后运行,得到在该条件下的结果

    20165228 实验一 Java开发环境的熟悉

    20165228 实验一 Java开发环境的熟悉

(三)练习:实现简单四则运算(能支持分数,加减乘除,支持括号),并进行测试(正常情况,异常情况,边界情况)

代码如下:

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("输入错误");
}
}
  • 命令行调试

    20165228 实验一 Java开发环境的熟悉

正常情况:

20165228 实验一 Java开发环境的熟悉

异常情况:

20165228 实验一 Java开发环境的熟悉

  • IDEA调试

    正常情况:

    20165228 实验一 Java开发环境的熟悉

异常情况:

20165228 实验一 Java开发环境的熟悉

二、实验中遇到的问题

  • 问题1:在设计完代码后, 调试时提示“java.lang.ClassNotFoundException: Calculator”

    解决方法:

    1.确认你的类库在系统的CLASSPATH下面,如果是Tomcat,则可以放在tomcat/lib/目录下面。

    2 删除重复的类库,只保留最新的
  • 问题2:用IDEA调试代码时,会提示找不到主类,让我很疑惑。因为命令行调试时完全正常

    解决方法:

    IDEA环境的问题,在项目的project structure 中,先将项目指定JDK ,然后在项目的PATH 中,将path修改为跟当前项目在一个路径下

三、实验体会与总结

  • 前面的实验部分,巩固了前几周娄老师在课上强调的在目录下编译和运行子目录下的程序以及带包程序的运行知识。
  • 对于后面的练习,带括号的运算对我现在的水平来说是不容易理解的,所以我只写了一个普通的四则运算程序。
  • 由于未能想到四则运算的边界,所以我也没有测试其边界值。