2011-06-14 43 views
6

可以使用Java編寫for循環來創建無限循環,還是隻能在導致該問題的循環中使用?可以寫一個for循環來創建一個無限循環,還是隻有在循環時纔會這樣做?

+0

我是編程新手 - 我的教科書只是在while循環的上下文中提到了無限循環。 – Genki 2011-06-14 18:05:11

+0

for循環只是while循環的另一個語法。其中一個可能的一切也可能與另一個。 – 2011-06-14 18:05:55

+0

任何for終止條件永遠不會被滿足的循環將是無限的:'for($ i = 0; $ i> -1; $ i ++){...}' – 2011-06-14 19:37:26

回答

8

你也可以用for循環做這樣的事情。例如。以下是相同的while(true)

for(;;) { 
} 
+1

+1更加神祕。 – asgs 2011-06-14 17:58:43

+3

使用'for(;;);'來縮短無限循環:-) – 2011-06-14 18:06:27

14
for(;;){} 

是一樣的當然

while(true){} 
+0

+1,演示變換。 – mre 2011-06-14 18:02:34

+1

這是相當挑剔的(實際上可能是不正確的,無論如何 - 我從高中兩年級以上的孩子那裏得到它),但我聽說'for(;;)'被編譯成非 - 有條件的'jmp'或其他,while'while(true)'它首先檢查'true'是否爲'true'。 – tsm 2011-06-14 20:53:15

6

可以

for(int i = 0; i == i; i++) {} 

任何環路可製成無限的,只要您撥打一個方式從未達到退出條件。

4

不要忘記像

for (int i=0; i<30; i++) 
{ 
    //code 
    i--; 
} 

錯誤這並不是因爲少見,因爲它應該是。

2

我只要加入這個因爲沒有人做這個版本:

for(;;); 
8

除了範圍問題,另一件事情,這樣的:

for(<init>; <test>; <step>) { 
    <body> 
} 

是一樣的:

<init> 
while(<test>) { 
    <body> 
    <step> 
} 

正如其他人所暗示的一樣,您可以使用while循環而不使用<init>形式或<step>形式,你可以有一個for循環沒有他們:

while(<test>) { 
    <body> 
} 

相同

for(;<test>;) { 
    <body> 
} //Although this is terrible style 

最後,你可以有一個

for(;true;) { 
    <body> 
} 

現在,請記住當我說有另一件事時?這是for循環不需要測試 - 高產解決其他人張貼:

for(;;) { 
    <body> 
} 
+1

您忘記了for-each循環 - 您可以隨時編寫一個永久循環的迭代器:: - D – 2011-06-14 20:41:42

1

Ofcourse for循環可能會導致無限循環。一個例子是:

for(int i = 0; i < 99; i /= 2){ ... }

因爲i沒有被增加,它會留在for循環體永遠,直到你退出程序。

3

只是爲了好玩(這太長了評論):一個很多人會很驚訝地發現了很多非常實用的目的,以下是一個無限循環:

for (long i = Long.MIN_VALUE; i < Long.MAX_VALUE; i++) { 
     ... 
    } 

如果執行這個循環的線程每秒可以完成40億次循環,並且可以在一個循環中執行增量和檢查(對於單個線程來說相當有效),並且如果我的數學不完全關閉,我認爲上述代碼需要大約150年才能執行:)

-1

可以聲明所述代碼的子部分是另一個部分在for循環中,例如 -

public class (classname) { 
    for(int i = 1; i <= 4; i++) { 
     for(int j = 1; i <= 4; j++) { 
    system.out.println(i + "*" + j + "=" (i*j)); 
} 

}

它幾乎是在無限循環;如果你INT更改爲長,並增加更多的變數,你幾乎可以讓它過去的25×10^12分鐘之久

+2

持續更長時間不會使其成爲無限循環! – Swapnil 2012-12-18 19:10:09

0

也有這一項,完成了話題:

do {something();} while(true); 
2

的方式我讓我的服務器,只要運行,直到我將它關閉是

for(int i = 0;i<-1;i++){//code here}

0

有很多的方式,使for循環無限。這是我找到了解決辦法:

int j = 1; 
for (int i = 0; i < j; i++) { 
    //insert code here 
    j++; 
} 

這工作對我很好,因爲它允許循環來檢查值的無限量以及無限循環。