[英]Java - input data only working if an output statement exists?
编辑:使代码更好一点,删除了背景故事,改写了问题。
因此,我一切正常,但随后又转移到另一台计算机上,它停止工作。 因为这是标记,所以我不想交一个可能会停止的程序,但该程序无法在我教授的计算机上工作。
因此,这就是我想要做的-我想连续输入数据,直到在空行上按下enter键为止。
我真正的问题是这个。 为什么仅在readLine命令后有print语句时才起作用? 那为什么在别人的计算机上不起作用呢? (可能是我正在从IDE中运行吗?JCreator 4.5可以工作,而学校计算机上的JCreator 4却不能。)
import java.util.*;
import java.io.*;
public class TestIfWorks {
public static ArrayList<String> getArrList() {
String input = "Empty";
ArrayList<String> info = new ArrayList<String>();
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
boolean go = true;
while (go) {
try {
input = in.readLine();
System.out.print(">"); //This causes it to work on my computer, but not on other computers. What!?!
} catch (Exception e) {
System.out.println("ERROR: key read problem");
}
if (input.equals("")) go = false;
else info.add(input);
}
return info;
}
public static void inputmethod() {
System.out.println("Please enter a brief summary if desired. Press enter on an empty line to stop entering data.");
ArrayList<String> info = new ArrayList<String>();
info = getArrList();
System.out.println("Now printing the arraylist out.");
for (int i = 0; i < info.size(); i++) {
System.out.println(info.get(i));
}
}
public static void main(String[] args) {
inputmethod();
}}
所以,是的,它喜欢循环一次,输入正确的数据,然后在第二个循环中,它总是认为您没有输入任何内容,因此只存储第一个数据。 除非输出语句在那里。 然后它喜欢工作,但仅在某些时候。
怎么了?
我认为您应该开始使用
if(str != null && !str.isEmpty())
为了查看它是否为空,您还应该添加
tempStr = "";
在if else块之后,因为如果出现问题,您的tmpStr仍将具有来自上一循环状态的值。
如果我是你,我可以试试看:
String input = System.console().readLine();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.