gpt4 book ai didi

java - JTextField - 数字分隔(ArrayList)

转载 作者:行者123 更新时间:2023-12-01 22:43:46 25 4
gpt4 key购买 nike

有没有办法使用 JTextField 获取多个不同的数字?

例如,给出以下数值:2.0、3.0、4.0。我想将它们分别放入ArrayList中。

如何处理不正确的输入数据以便继续输入?

    //in this case the resulst is "arList: 1.92239991"
textField = new JTextField("1.9, 223, 9991");
textField.addActionListener(this);
ArrayList<Double> arList = new ArrayList<>();

String str = textField.getText();
String result = str.replaceAll("\\s+","");
String otherResult = result.replaceAll(",","");
double d = Double.parseDouble(otherResult);
System.out.println(d);

arList.add(d);
for (Double anArList : arList) {
System.out.println("arList: " +anArList);
}

最佳答案

如果数字始终由 分隔,,您可以使用 String#split,它将返回一个值数组。

String str = textField.getText();
String[] parts = str.split(",");

这将返回 , 之间的每个值,包括空格。然后您可以修剪这些结果...

for (int index = 0; index < parts.length; index++) {
parts[index] = parts[index].trim();
}

现在将仅包含剩余的文本。如果您必须将其放在列表中,您可以使用...

List<String> values = Arrays.asList(parts);

如果您需要将其作为 Double 列表,则需要单独解析每个元素...

List<Double> values = new ArrayList<Double>(parts.length);
for (String value : values) {
values.add(Double.parseDouble(value));
}

如果任何一个值不是有效的 Double,这仍然会引发解析异常。

更好的解决方案可能是使用 JFormattedTextFieldJSpinner 来收集单个值并将每个值一次添加到列表中(可以将它们显示在JList),这将允许您在输入时验证每个值。

看看How to Use Formatted Text Fields , How to Use SpinnersHow to Use Lists了解更多详情

关于java - JTextField - 数字分隔(ArrayList),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25676893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com