我在java中创建预算程序,需要检查用户是否输入了有效的美元金额,特别是2位小数。没有说明如何做到这一点。
这是我目前的尝试,但逻辑错误
aExpense5.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String desc = aExpense3.getText();
String value = aExpense4.getText();
double fValue = 0;
try
{
fValue = Double.valueOf(value);
}
catch (NumberFormatException d)
{
JOptionPane.showMessageDialog(null, "Invalid Number1");
}
double dValue = (fValue * 10) % 10;
if (dValue <= 0)
{
updateExpenseList(desc, fValue);
}
else
{
JOptionPane.showMessageDialog(null,"invalid Number");
}
}
});
答案 0 :(得分:1)
您可以使用正则表达式:
if (value.matches("\\d*\\.\\d\\d")) {
// the number string has two decimal places
}
此正则表达式允许可选的整数部分,“。05”将匹配。
答案 1 :(得分:0)
尝试类似:
if (fValue*100 == (int)(fValue*100)) {
//fValue had 2 decimal places or less
}
如果fValue = 0.11
则fValue*100 = 11
。所以你有11 == (int)11
true
。
如果fValue = 0.111
则fValue*100 = 11.1
。所以你有11.1 == (int)11.1
false
。