所以我让一切正常,但随后转移到另一台计算机,它就停止了工作。因为这是用于标记的,所以我不想交出一个可能会停止在我教授的计算机上工作的程序。
所以这就是我要做的事情 - 我想连续输入数据,直到输入按空行。
我真正的问题是这个。为什么只有在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();
}}
所以是的,它喜欢循环一次,输入数据很好,然后在第二个循环上,它总是认为你什么也没输入,所以只存储了第一个数据。除非输出语句存在。然后它喜欢工作,但有时只是。
发生了什么事?
答案 0 :(得分:0)
我认为你应该开始使用
if(str != null && !str.isEmpty())
以查看它是否为空 你还应该添加
tempStr = "";
在if else阻塞之后,因为如果出现问题,你的tmpStr仍将具有上一个循环状态的值。
如果我是你,我会尝试这样做:
String input = System.console().readLine();