【问题标题】:JTextField input to DoubleJTextField 输入到 Double
【发布时间】:2018-11-12 22:21:45
【问题描述】:

我正在开发一个应用程序,该应用程序可以获取用户在文本字段中输入的快门速度。用户可以以分数“1/250”或整数的形式输入快门速度。从该输入中,我想将其转换为 double 类型的变量。

但是当我尝试输入“1/250”时,我得到了很多错误,第一个是:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: 
    For input string: "1/250"

我知道这与输入中的“/”有关,但我将如何将分数转换为双精度数?

        JTextField userShutter = new JTextField("", 10);
        userShutter.setBounds(60, 180, 50, 25);

        userShutter.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                double shutter = Double.parseDouble(userShutter.getText());
                baseShutterSpeed = shutter;
            }
        });

        // Calculate shutter speed
        calculator(stopValue, baseShutterSpeed);

【问题讨论】:

  • "1/250" 不是double ... 为什么你会认为它是?您需要获取文本,在 / 分隔符上拆分,然后您可以开始将文本转换为数字并执行所需的数学运算以将其转换为适当的双精度值
  • @MadProgrammer "你需要.." ..使用ScriptEngine 来评估表达式?好吧,也许只是我的懒惰让我这么建议。
  • @AndrewThompson 我只是在一个没有“花哨”脚本引擎的时代长大;)
  • userShutter.setBounds(60, 180, 50, 25); Java GUI 必须在不同的操作系统、屏幕尺寸、屏幕分辨率等上使用不同语言环境中的不同 PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或 combinations of them 以及 white space 的布局填充和边框。

标签: java swing jtextfield


【解决方案1】:

您只需使用从文本字段返回的字符串,并根据 / 字符将其分成两部分。然后,您可以使用这两个数字并将它们相除,就像使用基本数学来获得双倍一样。

String str = userShutter.getText();
String[] arr = str.split("/");

double answer = Double.parseDouble(arr[0]) / Double.parseDouble(arr[1]);
System.out.println(answer);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 2014-09-08
    • 2013-10-01
    相关资源
    最近更新 更多