2017-07-03 15 views
-3

我不明白,在我code.Here什麼布爾函數是我的代碼:什麼功能布爾中,而在此代碼

import java.io.*; 

class Example { 
    public static void main(String [] args){ 
     String s=""; 
     boolean read=false;   
     int x; 

     System.out.println("Enter your name:"); 

     try{ 


      while(!read){ 
       x=System.in.read(); 

       if(x < -1 || x == '\n') 
        read=true; 
       s=s + (char)x; 


      } 

     }catch(IOException io){ 
      System.err.println(io.getMessage()); 
     } 

     System.out.println(s); 

    } 
} 

爲什麼如果我改變變量布爾讀值true.While聲明似乎無限有人可以解釋爲什麼?

+0

你應該使用掃描器對象 –

+0

如果'System.in.read()'失敗或返回一個換行符,是否應該將該失敗值或換行符添加到字符串's'?你現在就這樣做。 –

+0

如果我打印x變量。結果是int,但他很好。但是,當我將讀取變量值更改爲true。輸入流將不會讀取。 –

回答

1

這裏的read是一個布爾變量而不是函數。就像你有int,String,boolean是隻有兩個值true或false的數據類型。最初,您將讀取指定爲false。所以while循環至少執行一次。

while(!read) 

上面的語句被縮短,並且可以改寫如下

while(read ==false) 

兩者都是相同的。 除非輸入數字< -1或按下Enter鍵(用\ n表示的新行),否則程序將不斷讀取字符,然後將read分配爲true,並且while循環停止執行,因爲上述條件不正確。

0

System.in.read函數返回-1結束文件(或輸入結束)。這意味着你的比較x < -1永不爲真。

您應該檢查是否相等-1改爲:x == -1

+0

非常感謝您的解釋 –