問題URL:http://www.spoj.com/problems/PT07H/如何讀取輸入,直到Java的EOF爲SPOJ上的此程序?
順便說,我試圖通過3種不同的方法,但沒有成功讀取的輸入時,控制從不出來而()循環(即,它從不檢測EOF或EOS)。
這裏是我的代碼讀取輸入XML:
public static void main(String[] args) throws Exception {
// Input & Output
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
OutputStream out = new BufferedOutputStream(System.out);
int data;
char c;
String line;
StringBuilder xml = new StringBuilder();
// Read input
/*
// Method-1
Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {
line = in.nextLine();
for (int i = 0; i < line.length(); i++) {
c = line.charAt(i);
if (isValid(c)) {
xml.append(c);
}
}
}
// Method-2
while ((data = br.read()) != -1) {
c = (char) data;
if (isValid(c)) {
xml.append(c);
}
}
*/
// Method-3
while ((line = br.readLine()) != null) {
for (int i = 0; i < line.length(); i++) {
c = line.charAt(i);
if (isValid(c)) {
xml.append(c);
}
}
}
}
按Ctrl + Z正常工作時,我在Eclipse中運行這個程序,但我不知道SPOJ環境。 – 2014-09-05 10:25:22
鑑於問題描述中可能輸入的定義,您並不需要「EOF」。只要讀取第二個XML文檔的結束標記,輸入即完成。 – JimmyB 2014-09-05 10:48:08