gpt4 book ai didi

java - NumberFormat 解析不够严格

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:54:30 24 4
gpt4 key购买 nike

我有一个 JFormattedTextField 和一个带有 Locale.US 的 NumberFormat。所以小数分隔符是点,分组分隔符是逗号。

现在,我在此文本字段中键入字符串“1,23”并将焦点移至另一个组件。我希望字符串消失(就像我键入“a”而不是“1,23”时那样),因为在使用 Locale.US 时它显然不是数字的有效表示形式。但文本字段中的文本改为“123”。

这是因为使用的NumberFormat在解析时并不严格,只是忽略了逗号。

问题:在这种情况下,我如何告诉 NumberFormat 抛出一个 ParseException,以便在将焦点移动到另一个组件?

测试代码:

JDialog dialog = new JDialog();
JPanel panel = new JPanel(new BorderLayout());
dialog.getContentPane().add(panel);

NumberFormat nf = NumberFormat.getInstance(Locale.US);
JFormattedTextField textField = new JFormattedTextField(nf);
textField.setText("1,23");
panel.add(textField, BorderLayout.CENTER);
panel.add(new JButton("focus"), BorderLayout.EAST);

dialog.pack();
dialog.setVisible(true);

将焦点从文本字段移至按钮,文本将变为“123”。

最佳答案

我建议您使用正则表达式并像这样使用匹配函数:

matches("\\d+([.,])?")

此外,如果您将使用 Integer.parseInt(String) 将抛出异常,如果它将被解析,或者您可以使用 Double.parseDouble(value)

关于java - NumberFormat 解析不够严格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30782905/

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