对于我的个人项目,我已经为其控制台版本编写了代码,我需要一个字符串的ArrayList
。 ArrayList 的字符串是通过控制台输入添加的。我就是这样做的:
ArrayList<String> input = new ArrayList<>();
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
String lineNew = sc.nextLine();
if (lineNew.isEmpty()) {
break;
}
input.add(lineNew);
}
所以我基本上将 Scanner
读取的每一行添加到 ArrayList
中。
所以我在 JavaFX 版本中所做的是创建一个文本区域,从中获取输入。打印输出的类后,我看到文本区域的 gettext()
方法返回一个 String
而不是 ArrayList
,它已经是由于包含的输入进入,它本身有点奇怪。无论如何,是否有一种方法可以返回字符串的 ArrayList 而不仅仅是带有文本区域的字符串或不同类型的文本字段,或者我是否需要从长字符串中创建子字符串并放入将其放入 ArrayList
中,或者我还可以做其他事情。
提前致谢。
最佳答案
getText()
正确且可预测地,将返回输入到 TextArea
中的整个文本。 。为了获得ArrayList<String>
,您需要自己进行转换。
值得庆幸的是,这样做非常简单。字符串有 split()
方法,允许您通过基于分隔符分割字符串来创建数组。在您的情况下,您将使用换行字符,或 \n
。将其与 Arrays
结合起来类(class),你会得到一个愉快而轻松的ArrayList
TextArea
中的每一行:
ArrayList<String> textLines =
new ArrayList<>(Arrays.asList(textArea.getText().split("\n")));
<小时/>
这是一个简单的 MCVE 演示:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.util.ArrayList;
import java.util.Arrays;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
// Just a simple interface
VBox root = new VBox(5);
TextArea textArea = new TextArea() {{
setWrapText(true);
}};
Button btnGetArray = new Button("Print Array");
// Set the action of the button to print the result of creating the ArrayList
btnGetArray.setOnAction(event -> {
System.out.println(getStringArray(textArea.getText()));
});
// Show the interface
root.getChildren().addAll(textArea, btnGetArray);
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
private ArrayList<String> getStringArray(String string) {
// This method builds an array list by taking the full String and splitting it
// at each new line (\n) character.
return new ArrayList<>(Arrays.asList(
string.split("\n")
));
}
}
关于java - 如何让文本区域返回字符串数组列表而不仅仅是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51201406/