例子问题
例子问题1:迭代
int var = 0;
int数组[4];
For (int j=0;j < = 4; + +)
{
var = var + 1;
}
var的值是多少?
8
5
4
10
6
5
for循环只是简单地把0到3的数字加起来,结果是6。
循环的第一次迭代,j=0:
var = 0 + 1 = 1
第二次迭代,j=1:
var = 1 + 1 = 2
第三次迭代,j=2:
var = 2 + 1 = 3
第四次迭代,j=3:
var = 3 + 1 = 4
第五次迭代,j=4:
var = 4 + 1 = 5
问题41:程序的实现
删除Boolean (int[] arr, int val) {
Boolean found = false;
int我;
For (i = 0;我< arr。长度&& !我+ +){
如果(arr[i] == val) {
Found = true;
}
}
/ /开始
如果(发现){
For (int j = i;J < arr.length;j++) {
Arr [j - 1] = Arr [j];
}
arr (arr)。长度- 1]= 0;
}
/ /结束
返回发现;
}
代码在什么之间/ /开始
而且/ /结束
做什么?
将删除的索引值设置为0
移位数组的内容
删除数组中的值
用默认值覆盖数组值
没有其他选择
移位数组的内容
处理这个问题最简单的方法是逐行注释。注意,只有在找到给定值时,条件才有效。(这是布尔的用法发现
)。如果确实找到了所需的值,那么代码将遍历数组,仅在索引位置之后拾取。(此时,我
是要删除的值的索引的后一位。)然后,它遍历代码并向后移动每个索引处的值。实际上,这将向后移动内容,使其看起来像是执行了删除操作。这是在线上完成的Arr [j - 1] = Arr [j];
.最后,最后的索引值设置为默认值,即0。(这是在线完成的arr (arr)。长度- 1]= 0;
)。
例子问题1:迭代
# include < iostream >
使用命名空间std;
int main ()
{
int i = 0;
Int sum =0;
(我;我< 4,+ = 2)
{
和=和+ i;
我,;
}
返回0;
}
i和和的值是多少?
我= 5,金额= 7
我= 4,金额= 6
我= 3 = 6
我= 3 = 8
我= 4,金额= 4
我= 3 = 6
让我们看一下foor循环的声明。只要整数i小于4,它就会运行。在每次迭代之后,它也会增加2。I +=2等价于I = I +2。
现在让我们看看循环本身的内容。整数“sum”从0开始,并在每次迭代时添加到i。在此之后,我们看到,每次迭代后,i减去1个数字。现在,在检查了循环的结构之后,让我们开始计算每个迭代。
迭代1:i=0, sum=0,然后i=-1。
迭代2:i=1, sum=1,然后i=0。
迭代3:i=2, sum=3,那么i=1,
迭代4:i=3, sum =6,那么i=3。
没有迭代5,因为“i”只能小于4才能进入循环,所以程序到此结束。
我= 3 = 6
例子问题1:迭代
对或错。
这个代码片段将迭代5次。
ArrayList
arrList.add(“string0”);
arrList.add(“string1”);
arrList.add(“string2相等”);
arrList.add(“string3”);
arrList.add(“沙漠西部边缘一溜排开”);
For (int I = 0;i < arrList.size();我+ +){
System.out.println (arrList.get (i));
}
真正的
假
真正的
数组列表由5个字符串填充。for循环将从0到4遍历数组列表,因为一旦i到达5,循环就会退出。0到4是5次迭代。所以答案是正确的。
问题42:程序的实现
假设你有以下代码:
public static void main(String[] args) {
Int a =2;
如果(% 2 = = 0)
system . out。println(“Hello World”);
其他的
System.out.println(“嗨”);
}
如果调用main方法,将打印什么?
嗨
将抛出一个错误
你好,世界,你好
你好世界
嗨
你好世界
你好世界
"Hello World"将被打印出来,因为第一个条件为真:2%2=0,或者相当于2是一个偶数。一旦if块中的条件被执行,if块就会被退出。这意味着任何其他elseif或else子句都不会被执行。如果%2==0为False,则将打印"Hi"。在任何情况下,都不可能同时打印“Hello World”和“Hi”。此外,不会抛出错误,因为语法是正确的,也不会发生运行时错误。
例子问题2:迭代
假设你有以下几行代码(x是某个初始化的整数):
Int k = arrr .length;
For (int I = -1;我< k-2;我+ +)
{
如果(arr[i+2] < x)
System.out.print(“Hello”);
}
“Hello”打印的最大次数是多少?
k
k - 1
0
将抛出一个ArrayIndexOutOfBoundsException异常
k-2
k - 1
答案是k-1, k是数组的长度。
这道题测试学生对循环迭代的理解。循环计数器从-1开始,但arr中要访问的第一个元素是index=1。同样,当i 由于arr的(k-1)个元素被访问(最后一个元素),而arr的第0个元素被跳过(第一个要访问的元素在index=1时,数组被索引为0),因此有k-1次循环迭代。如果arr中的所有值都不超过x,则“Hello”将打印k-1次。