接收多行输入并将其连接为单个字符串以在Java控制台应用程序中执行某些操作

时间:2019-03-27 04:18:43

标签: java console-application stringbuilder

最终的目标是接受多行用户输入,并将其全部组合为一个字符串,以供稍后在我的代码中使用。当我使用下面的代码时,每一个单行都完美地打印为输出。但是,当我使用注释的代码时,我的最终结果不正确。

System.out.println("Enter a string: ");

StringBuilder sb1 = new StringBuilder();
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
    System.out.println(scanner.nextLine());
    // String line = scanner.nextLine();
    // sb1.append(line);
}

// System.out.println(sb1.toString());

3 个答案:

答案 0 :(得分:2)

我假设您想要的是在每次输入后换一行,所以在

之后

sb1.append(line);

添加

sb1.append(System.getProperty("line.separator"));

编辑:(因为我不知道如何在注释中发布代码) 基本上,这将一直要求输入,直到用户键入“退出”为止,然后它将退出while循环并打印出字符串。您可以在添加行后添加逗号或空格来分隔它们。

我不确定您原来的问题是因为您没有中断循环还是因为您在打印中两次致电nextLine并将其分配给line

    public static void main(String[] args) {
        System.out.println("Enter a string: ");
        StringBuilder sb = new StringBuilder();
        try (Scanner scanner = new Scanner(System.in)) {
            String input;
            while (!(input = scanner.nextLine()).equals("exit")) {
                sb.append(input);
            }
        }
        System.out.println(sb.toString());
    }

答案 1 :(得分:0)

您可以尝试一下。

private static String readFile(String pathname) throws IOException {

 File file = new File(pathname);
    StringBuilder fileContents = new StringBuilder((int)file.length());        

    try (Scanner scanner = new Scanner(file)) {
        while(scanner.hasNextLine()) {
            fileContents.append(scanner.nextLine() );
        }
        return fileContents.toString();
    }
}

这段代码将从文本文件中读取所有行,并以单个字符串作为返回对象。

答案 2 :(得分:0)

以下是pom.xml文件供您参考:

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                        http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>json_example</groupId>
  <artifactId>json_example</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
    <dependency>
        <groupId>javax.json</groupId>
        <artifactId>javax.json-api</artifactId>
        <version>1.1.4</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.json</artifactId>
        <version>1.1.4</version>
    </dependency>
  </dependencies>
</project>

然后将依赖于Maven的jar文件添加到您的类路径中。

import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonReader;

public static void main(String[] args) {
    System.out.println("Enter a valid JSON string: ");

    try (// Create JsonReader from Json.
        JsonReader reader = Json.createReader(System.in)) {
        // Get the JsonObject structure from JsonReader.
        JsonObject jsonObj = reader.readObject();
        System.out.println(jsonObj.toString());
    } catch (Exception e) {
        e.printStackTrace();
    }

}