Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
接收多行输入并将其连接成单个字符串,以便在Java控制台应用程序中处理_Java_Console Application_Stringbuilder - Fatal编程技术网

接收多行输入并将其连接成单个字符串,以便在Java控制台应用程序中处理

接收多行输入并将其连接成单个字符串,以便在Java控制台应用程序中处理,java,console-application,stringbuilder,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("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());

我假设你想要的是在每次输入之后有一个新行

sb1.追加(行)

sb1.append(System.getProperty(“line.separator”)

编辑:(因为我不知道如何在评论中发布代码) 这将基本上一直要求输入,直到用户输入“exit”,然后它将从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());
    }

我假设你想要的是在每次输入之后有一个新行

sb1.追加(行)

sb1.append(System.getProperty(“line.separator”)

编辑:(因为我不知道如何在评论中发布代码) 这将基本上一直要求输入,直到用户输入“exit”,然后它将从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());
    }
你可以试试这个

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();
    }
}
此代码将读取文本文件中的所有行,并将单个字符串作为返回对象提供给我们。

您可以尝试此操作

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();
    }
}

此代码将读取文本文件中的所有行,并将单个字符串作为返回对象提供给我们。

以下是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>

以下是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>

我的目标是接受所有的行并将它们连接成一个字符串。这将在我的代码中的其他地方使用。@BlakeRivell-Hmm我所发布的内容与您所组合的内容应该给您一个带有输入的字符串+每个输入后的新行,据我所知,这是您想要的?我不想保留这些行。我希望它是一个单行字符串。@BlakeRivell不太确定你想要什么格式,但再看一看主帖子你的答案正是我在帖子中尝试的。如果你运行代码,它甚至不接受用户的输入,它就会死掉。这是我面临的问题。也许是因为我在使用Java12。。。我不知道。我的目标是接受所有的行并将它们连接成一个字符串。这将在我的代码中的其他地方使用。@BlakeRivell-Hmm我所发布的内容与您所组合的内容应该给您一个带有输入的字符串+每个输入后的新行,据我所知,这是您想要的?我不想保留这些行。我希望它是一个单行字符串。@BlakeRivell不太确定你想要什么格式,但再看一看主帖子你的答案正是我在帖子中尝试的。如果你运行代码,它甚至不接受用户的输入,它就会死掉。这是我面临的问题。也许是因为我在使用Java12。。。我不知道,我不是在看文件。我正在控制台应用程序中读取用户输入。我不是在这里读取文件。我正在控制台应用程序中读取用户输入。我在IntelliJ中运行调试,粘贴一个多行json字符串,然后按enter键,无论按enter键多少次,都不会发生任何事情。不过我明天会尝试一下你的代码。也许让用户在控制台应用程序中粘贴格式化的Json不是一个好主意,我应该用不同的方式来做,比如指向文件或其他东西。但这应该是可能的,对吗?我的最终目标是将用户输入的格式化json传递给最终的JsonParser=json.createParser(新的StringReader(userJsonStr));在传递到这里之前,我需要去除所有空白并删除所有换行符。否则解析器会出错。我认为在控制台应用程序中输入Json只是为了测试和调试。我在IntelliJ中运行调试,粘贴一个多行Json字符串,然后按enter键,无论按enter键多少次,都不会发生任何事。不过我明天会尝试一下你的代码。也许让用户在控制台应用程序中粘贴格式化的Json不是一个好主意,我应该用不同的方式来做,比如指向文件或其他东西。但这应该是可能的,对吗?我的最终目标是将用户输入的格式化json传递给最终的JsonParser=json.createParser(新的StringReader(userJsonStr));在传递到这里之前,我需要去除所有空白并删除所有换行符。我认为在控制台应用程序中输入Json仅仅是为了测试和调试。