Java - 输入数据仅在输出语句存在时有效?

时间:2015-04-14 06:28:55

标签: java loops input 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();
}}

所以是的,它喜欢循环一次,输入数据很好,然后在第二个循环上,它总是认为你什么也没输入,所以只存储了第一个数据。除非输出语句存在。然后它喜欢工作,但有时只是。

发生了什么事?

1 个答案:

答案 0 :(得分:0)

我认为你应该开始使用

if(str != null && !str.isEmpty())

以查看它是否为空 你还应该添加

tempStr = "";
在if else阻塞之后

,因为如果出现问题,你的tmpStr仍将具有上一个循环状态的值。

如果我是你,我会尝试这样做:

String input = System.console().readLine();