AP计算机科学A:逻辑错误

AP计算机科学A的学习概念,示例问题和解释

大学导师应用商店 大学导师安卓商店

例子问题

例子问题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;

大学导师的学习工具