【问题标题】:Multiplying the user's input with a decimal将用户输入乘以小数
【发布时间】:2015-03-24 22:48:04
【问题描述】:
 public void actionPerformed(ActionEvent ae) {
     float x, y;
     if(ae.getSource()==z) {
         x= Float.parseFloat(a.getText());
         y= x*x*3.14;
         Boomer.setText(String.valueOf(y)); 
     }
 }

我正在制作一个乘法 GUI。我之前做过几个,但这个略有不同。这个不同是因为我特别允许用户通过输入半径来找到圆的面积。

我只是像任何其他基本数学函数相关程序一样编写此代码,但我为圆的面积指定了方程。这就是问题所在。当我指定必须使用小数来查找输出时,程序无法运行。例如,如果我告诉它执行 x*x*10,它就可以正常工作。我只能假设问题源于小数。

【问题讨论】:

  • 那么当你不使用x*x*10,而使用x*x*3.14这样的小数时会发生什么?您收到错误消息还是获得值?
  • 这是我得到的错误消息:BaffleGUI.java:39: 错误:不兼容的类型:从双精度到浮点的可能有损转换
  • 好的,所以我认为你可以做 zachjack 的回答,或者像这样简单地将 3.14 转换为浮点数:y=x*x*(float)3.14; 并且错误应该消失(如果你不关心“有损转换” ")。
  • 您的建议和他的建议都很好。谢谢!

标签: java user-interface decimal actionevent


【解决方案1】:

很明显 3.14 是一个双精度值。因此,以下行对不兼容的类型进行了采样。它试图将 double 3.14 放入 float pi。

float pi = 3.14;

这是一种可能的方式:

float pi = 3.14f;

这是另一个:

float pi = (float) 3.14;

您应该听取 zachjack 的建议以获得准确的结果。 Math.PI 也对应于 double。因此,您应该使用这条线计算面积:

y = x * x * (float) Math.PI;

【讨论】:

    【解决方案2】:

    我的猜测是 3.14 被编译为 Double 而不是 Float。

    我建议使用Math.PI 而不是仅使用 3.14,然后将值更改为 Doubles。这应该可以解决任何问题。

    【讨论】:

      【解决方案3】:

      您可以将此行 y= x*x*3.14; 更改为此 y= x*x*(float)3.14;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多