我有一个计算器,用于计算音量,结果返回为“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);
}
答案 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)
您忘记将字符串(lengthString
,widthString
和depthString
)转换为双打并将其分配给您的变量(length
,width
和{ {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;
}