一、实验内容及步骤
1.使用JDK编译、运行简单的Java程序
cd code
进入code文件夹mkdir 20175215exp1
创建20175215exp1文件夹ls
查看当前目录cd 20175215exp1
,用pwd
查看当前工作路径vim Hello.java
编译Hello.java 文件javac -d . Hello.java
编译代码java Hello
运行代码
实验截图如下
2.使用IDEA调试Java程序
- 设置断点
- 单步运行
- step into (快捷键F7)
- step over (快捷键F8)
- 两个断点之间的跳跃Resume(快捷键F9)
- 设置条件断点
实验截图如下
3.实验练习
7, 实现求两个数的最大公约数和最小公倍数的功能,数从命令行输入,并进行测试(正常情况,异常情况,边界情况)。
代码为:
import java.util.*;
public class Experiment {
public static void main(String[] args) {
Calculate cal = new Calculate();
Scanner reader = new Scanner(System.in);
int tmp,x,y,i,j;
i=reader.nextInt();
j=reader.nextInt();
if(i>j){
tmp=i;
i=j;
j=tmp;
}
x=cal.gcd(i,j);
y=i*j/x;
System.out.println(i+"和"+j+"的最大公约数为"+x+",最小公倍数为"+y);
}
}
public class Calculate{
int gcd(int a, int b){
int k=1;
while(k!=0){
k=b%a;
b=a;
a=k;
}
return b;
}
}
实验截图:
正常情况:
异常情况(加入负数之后最小公倍数无法正确计算):
边界情况:
4.实验过程中遇到的问题以及解决方案
(1)断点调试中碰到的问题以及解决方案
实验过程中,在断点调试的时候设置值一次运行的时候总是会碰到问题,发现是Remove once hit
没选中
选中红圈部分内容就可以了
(2)程序调试中碰到的问题以及解决方案
问题:出现如图所示的/ by zero
的问题
解决方案:算法错误,修改代码后纠正。
(3)命令行输入中碰到的问题以及解决方案
- 问题:用教材P47中的案例,想用数组来实现输入,发现不可行,导致无法继续后续的程序
- 解决方案:直接使用变量来接受命令行输入
二、实验体会与总结
- 实验过程本身比较简单,但还需要细心,实验中碰到的两个问题都是细节问题,第一遍做的时候没有细心就没发现问题,导致没有第一时间调试成功。
- 使用调用其他类的方法可以让主类中的功能更为直白,但我这次的实验中的代码还是没做到最简化,希望下次能使用面向对象的思维将主类中的作用更加直白。
参考资料
1.最大公约数_百度百科
2.最小公倍数_百度百科
3.2018-2019-2 20175313 实验一《Java开发环境的熟悉》实验报告
4.编程实现输入两个整数,输出其最大公约数和最小公倍数。
5.Java编程,输入两个数,输出两个数的和。
6.java.lang.ArrayIndexOutOfBoundsException异常分析及解决
7.Exception in thread "main" java.lang.ArithmeticException: / by zero