日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

java while (true) 死循环

發布時間:2024/8/24 综合教程 21 生活家
生活随笔 收集整理的這篇文章主要介紹了 java while (true) 死循环 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

true 即表示為真。因此while(true)
是一個無限循環,因為表達式的值一直為真。為了跳出循環,循環體內部要用break語句來跳出。例如,可以在循環體內部用if來判斷,if(x==5)break;用exit也可以跳出,此時表示了函數直接返回?

1、在java網絡通訊的程序里原本有一段是這樣的:

while(in.readLine()!=null){

String aa=in.readLine();

}

結果發現讀取老是錯誤,后來我試了用下面的方法

while(true){

String aa=in.readLine();

}

結果讀取成功!這程序咋一看差不多,我們考慮第一個程序,當程序讀到,while(in.readLine()!=null)的時候,程序發生了阻塞,等待讀入,如果讀入成功,就執行下一個循環,下一個已開始也是阻塞,接著再讀入,如此反復。而第二個是一開始就循環,但是讀到String
aa=in.readLine()的時候也發生阻塞,也是讀入后才發生后面的事情,然后再循環,表明上看好像是一樣的,但是結果為什么不一樣呢!!!

后來我才弄明白,原來第一個在讀到while(in.readLine()!=null)的時候,如果有數據,那么執行String
aa=in,readLine()的時候程序會繼續往下讀,也就是第一個while里面的讀入被拋棄了,如果程序讀入的只有是一行的話,那么這行就不會讀入!!

2、while(true) ... break 的應用

在程序中,常常有一些無限循環的情況,比如當一個程序沒有異常發生的時候,讓循環一直執行。比如要計算PI的值,當發生異常的時候終止循環,這時候就需要while(true)
... break 著種結構。這不是新語法,也不算新用法。算得上一種不常見的能解決特殊問題的用法。

下面舉例說明,比如要獲取控制臺輸入字符串,然后將獲取的字符串打印出來。可以這么寫:

import java.io.IOException;

public class ConsoleInput {

public static void main(String[] args) {

int ch;

StringBuffer sb = new StringBuffer();

System.out.print("請您輸入一字符串:");

while (true) {

try {

ch = System.in.read();

if (ch == -1

(char) ch == '
') {

break;

} else if ((char) ch != '') {

sb.append((char) ch);

}

} catch (IOException e) {

e.printStackTrace();

}

}

System.out.println("您輸入的字符串是:" + sb.toString());

}

}

運行結果:

請您輸入一字符串:Hello Java!

您輸入的字符串是:Hello Java!

Process finished with exit code 0

while(true) ... break 結構有其等價的格式

for(;;){

//todo:do something

... break;

}

但是這些結構的特點就是死循環,并且當某種條件發生的時候,結束循環。

終止條件是必須的,否則編譯會出錯。

終止條件可以是一個條件表達式,比如if語句。也可以是一個try...catch的語句塊,在異常發生時候,在catch語句中break----終止掉循環。

比如:

public class ConsoleInput {

public static void main(String[] args) {

for(int x=10;;x--){

try{

System.out.println(10/x);

}catch(Exception e){

e.printStackTrace();

break;

}

}

}

}

運行結果:

1

1

1

1

1

2

2

3

5

10

java.lang.ArithmeticException: / by zero

at ConsoleInput.main(ConsoleInput.java:12)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)

at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at
com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

Process finished with exit code 0

從上面可以結果可以看出,發生異常也可以作為循環終止條件。??

http://blog.csdn.net/haiyan2012/article/details/6906047

總結

以上是生活随笔為你收集整理的java while (true) 死循环的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。