我不能让计算工作

时间:2011-03-30 13:12:45

标签: java eclipse

我有一个计算器,用于计算音量,结果返回为“0”

 JButton btnCalculateVlmn = new JButton("Calculate Hot Tub Volume");  
        btnCalculateVlmn.addActionListener(new ActionListener()  
        {  
            public void actionPerformed(ActionEvent arg0)  
            {  
                double width = 0, length = 0, depth = 0, volume = 0;  
                String lengthString, widthString, depthString;  
                lengthString = hotTubLengthText.getText();  
                widthString = hotTubWidthText.getText();  
                depthString = hotTubDepthText.getText();  
                try 
                {  
                    if (rdbtnRoundTub.isSelected())  
                    {  
                        volume = Math.PI * Math.pow(length / 2.0, 2) * depth;  
                    }  
                    else 
                    {  
                        volume = Math.PI * Math.pow(length * width, 2)  
                                * depth;  
                    }  
                    DecimalFormat formatter = new DecimalFormat("#,###,###.###");  
                    hotTubVolumeText.setText("" + formatter.format(volume));  
                }  
                catch (NumberFormatException e)  
                {  
                    labelTubStatus  
                            .setText("Fill in all fields");  
                }  
            }  
        });  
        btnCalculateVlmn.setBounds(20, 200, 180, 20); 
        hotTubs.add(btnCalculateVlmn);  
        JButton Exit = new JButton("Exit");  
        Exit.setBounds(220, 200, 80, 20);  
        Exit.addActionListener(this);  
        hotTubs.add(Exit);  
    }

5 个答案:

答案 0 :(得分:3)

深度声明为0并且从不覆盖...因此音量始终为0。 我猜你应该这样做:

...
double width = 0, length = 0, depth = 0, volume = 0;  
String lengthString, widthString, depthString;  
lengthString = hotTubLengthText.getText();  
widthString = hotTubWidthText.getText();  
depthString = hotTubDepthText.getText();  
depth = Double.valueOf(depthString);
length = Double.valueOf(lengthString);
width = Double.valueOf(widthString);
....

答案 1 :(得分:1)

您忘记将字符串(lengthStringwidthStringdepthString)转换为双打并将其分配给您的变量(lengthwidth和{ {1}})。

答案 2 :(得分:1)

您有depth = 0

anything * 0 = 0

答案 3 :(得分:0)

您忘记将字符串从输入字段转换为double。

因为你将长度和宽度设置为0

,结果为0

答案 4 :(得分:0)

在主if条件的两个分支中,您的表达式以* depth结尾。但是,此depth变量似乎设置为0并且未设置为其他任何变量。因此,音量始终为0,因为无论乘以0,都将为0。

也许你想使用depthString。像这样:

depth = Integer.parseInt(depthString);
if (rdbtnRoundTub.isSelected())  
{  
   volume = Math.PI * Math.pow(length / 2.0, 2) * depth;  
}  
else 
{  
   volume = Math.PI * Math.pow(length * width, 2)  * depth;  
}