例子问题
例子问题1:逻辑错误
考虑下面的代码:
public static int[] del(int[] a,int delIndex) {
if(delIndex < 0 || delIndex >= a.length) {
返回null;
}
Int [] ret = new Int [a.]长度- 1];
For (int I = 0;I < a.length;我+ +){
if(i != delIndex) {
Ret [i] = a[i];
}
}
返回受潮湿腐烂;
}
上面的代码有什么错误?
您需要实现值的交换。
初始条件(即if语句)逻辑不正确。
数组索引的使用我是不正确的。
循环是无限的。
有一个空指针异常。
数组索引的使用我是不正确的。
上面代码中有问题的一行是:
Ret [i] = a[i];
这在数组结束之前都能很好地工作。的变量我是为了数组的长度一个.然而,数组受潮湿腐烂长度少了1。这意味着你将溢出你的数组,在循环的最后得到一个ArrayIndexOutOfBoundsException。您需要实现两个索引——当您跳过从数组中删除的元素时,其中一个索引将不会在那一次增加。
例子问题1:逻辑错误
这个循环出了什么问题?
Int I = 0;
Int count = 20;
Int [] arr = [1, 3, 4, 6, 8, 768, 78, 9]
While (i < count) {
If (i > 0) {
Arr [i] = count;
}
If (i < 15) {
System.out.println(“嘿”);
}
}
If语句不正确
循环是无限的
它打印嘿太多次了
计数永远不会递减
循环是无限的
循环是无限的,因为i从来没有被递增到大于count。
这个例子中的循环是,
While (i < count) {
If (i > 0) {
Arr [i] = count;
}
发生错误是因为while循环中没有终止因子。一个终止因素是,
虽然(我<计数){
If (i>0, i<10, i++){
Arr [i] = count;
}