繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM