接收多行输入并将其连接成单个字符串,以便在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仅仅是为了测试和调试。