我正在尝试以相反的顺序打印数组。
以下是代码:
stride=5
在这段代码中没有发生任何事情,但当我将第二个for循环中的第二个条件从dW=dH=5
更改为import java.util.Scanner;
public class Main {
public static void main(String []argh) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = in.nextInt();
}
for (int j = n-1 ; j == 0; j--) {
System.out.print(arr[j] + " ");
}
in.close();
}
}
时,它工作正常。我不明白为什么。在j == 0
中,是否应该递减j >=0
直到它等于j==0
?
答案 0 :(得分:6)
for (int j = n-1 ; j == 0; j--)
表示只要j
等于0
,循环就会执行。由于j
被初始化为n-1
,因此永远不会执行循环(假设n!= 1)。
答案 1 :(得分:3)
for
循环的第二个参数是循环条件:它指定循环体将执行的条件。当条件为真时,正文将执行,不 直到为真。
注意您的第一个for
循环如何工作:i
从0
开始,并在 i < n
时循环。在第二个循环中它的原理相同,只有你的循环变量向相反的方向移动:j
从n - 1
开始,并且应该在 {{1}时循环 }}
Java中的所有条件循环(j >= 0
,while
和for
)都以这种方式工作:它们只在条件成立时循环,然后它们终止,执行选择循环之后。
答案 2 :(得分:0)
在j==0
中,条件将为假,因为j的值等于n-1,j=n-1
。
假设n的值是3,那么j将等于2然后它将进入条件检查part for for for循环,在那部分你写的像j==0
,因为j不等于2因此条件将为假,并且它将从for循环中退出。