2013-08-30 71 views
1

我必須解決的一個問題:http://www.urionlinejudge.com.br/judge/problems/view/1117的Java BufferedReader類的readLine方法不返回任何

我的代碼,當代碼到達最後一行的方法的readLine不返回任何結果。它等待我輸入其他行的輸入。

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 

public class ValidacaoDeNota { 
    public static void main(String[] args) throws IOException { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); 

     String line = null; 
     double num; 

     Double ultimaNotaValida = null; 

     while ((line=br.readLine()) != null) { 
     num = Double.parseDouble(line); 

     if (num < 0 || num > 10) { 
      bw.write("nota invalida"); 
     } else if (ultimaNotaValida == null) { 
      ultimaNotaValida = num; 
     } else { 
      bw.write("media = " + ((ultimaNotaValida+num)/2)); 
     } 

     bw.write("\n"); 
     } 

     bw.flush(); 
    } 
} 
+1

那麼它一直等到它有換行或者知道它已經到達輸入的末尾,是的。這就是它的意義所在。 –

+1

您的指示說要從文件中讀取輸入,爲什麼不使用FileInputStream呢?使用FileInputStream可以更容易地找出輸入結束的時間。 –

+0

@SimonAndréForsberg比readLine()更容易返回null嗎?更容易如何? – EJP

回答

1

您需要輸入Ctrl/d(Windows)或按Ctrl/Z(UNIX,LINUX等)在控制檯產生流的末尾。然後readLine()將返回null,並且您的循環將終止。

相關問題