簡體   English   中英

Java:無法理解 for 循環行為

[英]Java: Unable to understand for loop behaviour

我對編碼有點陌生,我正在解決一個問題,該問題應該打印變量 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等等...

你把條件放錯了地方,所以你的循環是無限的。

進一步解釋一下,由於您的循環沒有退出條件,因此i將永遠遞增,但在達到Integer.MAX_VALUE ,下一個i++將溢出,因此i將變為負數( Integer.MIN_VALUE )。 然后它將繼續增加,直到它再次達到您希望打印的范圍,因此該范圍將一次又一次地打印,永遠。

正確的循環應該是:

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

現在i將從您希望打印的第一個值 ( L ) 開始,並且在打印您希望打印的最后一個值 ( R ) 后循環將終止。

如果不熟悉編碼,請點擊此鏈接以了解 for 循環的工作原理

並且您沒有定義 for 循環應該停止執行代碼塊的任何條件

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

這就是你的 for 循環應該如何

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM