![](/img/trans.png)
[英]Unable to understand the behaviour of thread synchronization in following java code
[英]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.