【发布时间】:2018-07-10 23:12:11
【问题描述】:
这里是有问题的代码:
public void setReminder() {
if (db.getTotalIncome(prefs.getString("username", "")) != 0.0 ||
db.getTotalExpenses(prefs.getString("username", "")) != 0.0 ||
db.getReminder(prefs.getString("username", "")) != null) {
Float income = db.getTotalIncome(prefs.getString("username", ""));
Float expense = db.getTotalExpenses(prefs.getString("username", ""));
Cursor reminder = db.getReminder(prefs.getString("username", ""));
if (reminder.moveToFirst() != false) {
String reminderValue = reminder.getString(reminder.getColumnIndex("value"));
if (expense <= Integer.parseInt(reminderValue)/100*income) {
PugNotification.with(this)
.load()
.title("Warning")
.message("Expenses nearing threshold")
.bigTextStyle("You have spent more than " + Integer.parseInt(reminderValue) / 100 + "% " + "of your income!")
.smallIcon(R.drawable.icon_flag)
.largeIcon(R.drawable.icon_flag)
.flags(Notification.DEFAULT_ALL)
.simple()
.build();
}
}
}
}
目前,在if (expense <= Integer.parseInt(reminderValue)/100*income),它似乎总是正确的,导致显示通知。我似乎无法弄清楚发生了什么。还有一点,好像是第一个if 声明
if (db.getTotalIncome(prefs.getString("username", "")) != 0.0 ||
db.getTotalExpenses(prefs.getString("username", "")) != 0.0 ||
db.getReminder(prefs.getString("username", "")) != null)
也总是返回 true。我读到 float 的默认值是 0.0,那么我的代码是错误的还是发生了什么?
【问题讨论】:
-
简单解决方案:- 使用调试器。你会得到
what is going on。 -
发现问题:
Integer.parseInt(reminderValue)/100一直返回0。将其更改为Float.valueOf(reminderValue)解决了这个问题。
标签: android