我在输入时输入行(IDE eclipse Luna)按下输入光标继续向下移动但没有输出显示。在尝试第二种方法,但我必须按两次输入打印输出我如何解决这两个错误。为什么在第二种方法中,一旦检测到空行,它就不会打印为什么我必须按两次输入当我们在控制台中按Enter键时会发出什么命令
第一种方法
private static String para = null;
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(System.in));
String line;
while ((line = bufferedReader.readLine()) != null) {
para = para + line;
}
bufferedReader.close();
System.out.println(para);
}
第二种方法
String line;
while (!(line = br.readLine()).equals("")) {
s1 = line.split(" ");
for (int j = 1; j < s1.length; j++) {
int m = Integer.parseInt(s1[j]);
edges[Integer.parseInt(s1[0]) - 1].add(vertices[m - 1]);
}
}
答案 0 :(得分:1)
Method1 永远不会结束,因为readLine()永远不会返回null,它会在从控制台输入读取时返回空字符串。
while ((line = bufferedReader.readLine()) != null) { para = para + line; }
记得按下输入java认为它是newLine()命令,它肯定不为null,所以你的程序继续使用空字符串,永远不会从while循环终止。
我建议有一些意义全面检查以终止while循环。您可以尝试使用Scanner而不是BufferedReader,因为它提供了许多实用程序方法。
In Scanner you have methods like hasNext(), hasNextLine() etc which tells whether you have further input or not. Similarly methods like nextLine(), nextInt(), nextDouble() are there to get specific converted values from the command line or any other stream.
Method2 正在做很多不属于Method1的操作,请你分享完全可运行的代码。我再次怀疑终止循环的逻辑。
所以我建议在迭代一些数据时使用更具体的检查来终止你的循环。
答案 1 :(得分:0)
当您按下entre键时,bufferedReader
对象会收到一个空字符串,因此它不为空。
要结束输入,应该查找如下的键:
private static String para = null;
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(System.in));
String line;
while (!"end".equals((line = bufferedReader.readLine()))) {
para = para + line;
}
bufferedReader.close();
System.out.println(para);
}
我在这里选择&#39;结束&#39;作为一个结束序列,你可以选择任何东西,如空字符串,这是在空行上按Enter键的结果。
答案 2 :(得分:0)
没有输出显示为什么??
因为你没有在循环中打印任何东西
while(!(line = bufferedReader.readLine())。equals(“”))//读取直到输入而不输入任何内容被按下。
private static String para = ""; // initialize your para with empty string(i.e "") not with null otherwise null will be added to your para string.
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(System.in));
String line=bufferedReader.readLine();
do{
System.out.println(line); // print what you input
para = para + line;
}
while (!(line = bufferedReader.readLine()).equals(""));
bufferedReader.close();
System.out.println(para);
}