在我的代码中,我从控制台获取输入并从中读取:
InputStreamReader sc = new InputStreamReader(System.in);
BufferedReader bufRead = new BufferedReader(sc);
但是当我无法阅读最后一行输入时?
例如: 如果我想阅读c,控制台输入如下所示,
在c
之后什么也没有一个
b
C(EOF)
但是对于像这样的输入控制台,在那里有一行之后就可以读取c
一个
b
ç
(EOF)
实际代码:
InputStreamReader sc = new InputStreamReader(System.in);
BufferedReader bufRead = new BufferedReader(sc);
String s = bufRead.readLine();
int t = Integer.parseInt(s);
int k = 0; // no. of city
for (int l = 0; l < t; l++) {
s = bufRead.readLine();
k = Integer.parseInt(s);
cityDetails = new String[3][k];
for (int j = 0; j < k; j++) {
s = bufRead.readLine();
StringTokenizer st = new StringTokenizer(s);
cityDetails[0][j] = st.nextToken();
cityDetails[1][j] = st.nextToken();
cityDetails[2][j] = st.nextToken();
}
s = bufRead.readLine();
dist = Double.parseDouble(s);
System.out.println(dist);
}
答案 0 :(得分:0)
您需要阅读直到BufferedReader
不返回null。它需要循环。
以下是Mykong的一个例子
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderExample {
public static void main(String[] args) {
BufferedReader br = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader("C:\\testing.txt"));
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
忽略文件部分。重要的是如何使用BufferedReader
阅读。键盘输入和文件保持不变。
或者,您可以使用java.util.Scanner
方法来读取不同类型的原始数据。