Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:无法理解for循环行为_Java_Loops_For Loop_Iteration - Fatal编程技术网

Java:无法理解for循环行为

Java:无法理解for循环行为,java,loops,for-loop,iteration,Java,Loops,For Loop,Iteration,我对编码有点陌生,我正在解决一个问题,这个问题应该打印变量L和R之间的所有整数,包括L,R。但是我反复得到所需的输出。我不明白为什么 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int L = sc.nextInt(); int R =

我对编码有点陌生,我正在解决一个问题,这个问题应该打印变量L和R之间的所有整数,包括L,R。但是我反复得到所需的输出。我不明白为什么

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int L = sc.nextInt();
        int R = sc.nextInt();

        for (int i = 0; ; i++) {
            if (i >= L && i <= R) {
                System.out.print(i + " ");
            }
        }
    }
输入:L=4,R=8


输出:4 5 6 7 8 4 5 6 7 8 4 5 6 7 8等…

您将条件放在错误的位置,因此您的循环是无限的

为了进一步解释,由于循环没有退出条件,我将永远递增,但在达到Integer.MAX_值后,下一个i++将溢出,因此我将变为负Integer.MIN_值。然后,它将继续递增,直到再次达到您希望打印的范围,以便该范围将被一次又一次地打印,直到永远

正确的循环应该是:

for(int i = L; i <= R; i++) {
    System.out.print(i+" ");
}

现在我将从您希望打印L的第一个值开始,循环将在打印您希望打印R的最后一个值后终止。

您设置的条件是错误的位置,因此您的循环是无限的

为了进一步解释,由于循环没有退出条件,我将永远递增,但在达到Integer.MAX_值后,下一个i++将溢出,因此我将变为负Integer.MIN_值。然后,它将继续递增,直到再次达到您希望打印的范围,以便该范围将被一次又一次地打印,直到永远

正确的循环应该是:

for(int i = L; i <= R; i++) {
    System.out.print(i+" ");
}

现在,我将从您希望打印L的第一个值开始,循环将在打印您希望打印R的最后一个值后终止。

如果您不熟悉编码,请遵循此步骤了解for循环的工作原理

并且您没有定义for循环何时停止执行代码块的任何条件

for(int i = L; i <= R; i++) {
    System.out.print(i+" ");
}

这就是for循环的工作方式

如果您对编码还不熟悉,请遵循此步骤了解for循环的工作方式

并且您没有定义for循环何时停止执行代码块的任何条件

for(int i = L; i <= R; i++) {
    System.out.print(i+" ");
}

这就是for循环的方式

请正确设置代码格式。还有,为什么要粘贴两次主类?对不起,我是新来的,现在正在编辑代码。请正确格式化代码。还有,为什么要粘贴两次类Main?对不起,我是新来的,现在正在编辑代码,但是为什么在我把I++放在那里时,它会一次又一次地打印45 6 7 8?8不应该因为i++而变成9吗?@GeminiKrishna你读了我在编辑中添加的段落了吗?但是为什么我把i++放在那里时它会一次又一次地打印4 5 6 7 8呢?8不应该因为i++而变成9吗?@GeminiKrishna你读了我在编辑中添加的段落了吗?