程序设计中临时变量的使用
一、题目要求
//定义一个数组,比如
int arr[] = {1,2,3,4,5,6,7,8};
//打印原始数组的值
for(int i:arr){
System.out.print(i + " ");
}
System.out.println();
// 添加代码删除上面数组中的5
...
//打印出 1 2 3 4 6 7 8 0
for(int i:arr){
System.out.print(i + " ");
}
System.out.println();
// 添加代码再在4后面5
...
//打印出 1 2 3 4 5 6 7 8
for(int i:arr){
System.out.print(i + " ");
}
System.out.println();
二、运行结果截图
- 由于屏幕原因,为了更清楚、直观的呈现运行结果,我对输出的结果格式进行了一些修改,修改后运行结果如下:
三、遇到的问题及其解决方法
- 问题1:对于ArrayInsect这个类中的Insect函数的实现,出现了如下问题:
- 解决方法:对于为什么输出到后面变成了“666”,起初我查看了上面删除输出的结果,是正确的;那么出现这个问题的原因只能是出在Insect这个方法上,我查看了我的Insect方法,在对它进行调试,终于找到了问题的所在。原因是因为对index后面的元素进行移位时,应该先从最后一个开始移,否则就会被覆盖,出现输出全是同一个数的情况。所以我对代码进行如下修改:
- 问题2:针对问题1,对代码进行修改后,又出现了溢出的问题。
- 解决方法:仔细分析我新改的那几条语句,发现下标是i+1,那么当i=length-1时,i+1=length,但是该数组下标最大为length-1,所以会出现溢出,应该把i的初值改为length-2。
- 修改后运行结果截图:
五、心得体会
- 认真审题很重要。起初我没有认真看题目要求的输出结果,以为删除完“5”后,输出的结果应该是“1 2 3 4 6 7 8”,所以就一直在想要怎么改变一个静态数组的长度,结果毫无疑问是失败。后来我又认真进行比对,才发现要求的输出是“1 2 3 4 6 7 8 0”。
- 不要太自负。刚开始看到这道题,我感觉这种题应该很简单,半个小时肯定能做完。然而这种自负的后果就是:首先看错题,其次又不注意细节,产生多次溢出,浪费了大量的时间。