使用标准/输出流作为字符串输入/输出

时间:2014-03-18 22:15:44

标签: java io standard-library

我有一个作业,声明“您可以假设输入将来自流中的标准输入。您可以假设标记可以访问所有标准库”。

如何读取多行/输入并将所有输入保存为一个字符串,然后从函数中输出该字符串?

目前这是我的功能,但它不能正常工作,在一个阶段它不会读取多行,现在它根本不起作用。

public static String readFromStandardIO() {

    String returnValue = "";

    String newLine = System.getProperty("line.separator");
    System.out.println("Reading Strings from console");

    // You use System.in to get the Strings entered in console by user
    try {
        // You need to create BufferedReader which has System.in to get user
        // input
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                System.in));
        String userInput;
        System.out.println("Enter text...\n");
        while (!(reader.readLine() == reader.readLine().trim())) {
            userInput = reader.readLine();
            returnValue += userInput;
        }

        System.out.println("You entered : " + returnValue);
        return returnValue;

    } catch (Exception e) {

    }
    return null;
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

问题是你在三个不同时间调用reader.readLine(),所以你最终会比较两个完全不同的字符串,然后记录另一个字符串。

此外,通常不赞成使用==比较字符串(比较具有==的对象询问它们是否是相同的实际对象(是的,Java在这方面对字符串宽容,但它仍然不赞成)。 / p>

你需要做更类似于:

的事情
public static String readFromStandardIO() {

    String returnValue = "";

    System.out.println("Reading Strings from console");

    // You use System.in to get the Strings entered in console by user
    try {
        // You need to create BufferedReader which has System.in to get user
        // input
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String userInput;
        System.out.println("Enter text...\n");
        while (true) {
            userInput = reader.readLine();
            System.out.println("Finally got in here");
            System.out.println(userInput);
            returnValue += userInput;
            if (!userInput.equals(userInput.trim())) {
                break;
            }
        }

        System.out.println("You entered : " + returnValue);

    } catch (Exception e) {

    }
    return returnValue;

}