当前位置: 首页 > 知识库问答 >
问题:

大于或等于总是触发

程墨竹
2023-03-14

下面是有问题的代码:

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(费用

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,那么我的代码是错的还是怎么了?


共有2个答案

吴城
2023-03-14

试用

expense.intValue() <= Integer.parseInt(reminderValue)/100*income

与您的其他if语句相同:

if (db.getTotalIncome(prefs.getString("username", "")).intValue() != 0 ||
                db.getTotalExpenses(prefs.getString("username", "")).intValue() != 0 ||
                db.getReminder(prefs.getString("username", "")) != null) 

欲了解更多信息,请阅读以下答案:https://stackoverflow.com/a/29139595/284308

苏坚成
2023-03-14

您的代码

    if (db.getTotalIncome(prefs.getString("username", "")) != 0.0 ||
            db.getTotalExpenses(prefs.getString("username", "")) != 0.0 ||
            db.getReminder(prefs.getString("username", "")) != null)

if中的表达式始终为true,因为您使用的是|,意思是,因此如果任何参数为true,则整个表达式为true。在您的情况下,至少有一个参数是true

 类似资料:
  • 今天我注意到这个node.js代码: 给出输出 这很奇怪;如果某物不等于0或大于0,那么它为什么大于或等于0呢?发生什么事了?

  • 问题内容: 我在PostgreSQL中有一个名为的关系,该关系包含2个字段:和,我想找到具有最高值的产品。据我所知,有两种方法可以做到: 或者 他们的执行速度有什么不同吗? 问题答案: 如果有任何行,第一个查询将失败(如Gordon所示)。 仅当所有行都具有时,第二个查询才会失败。因此,它在大多数情况下应该是可用的。(而且速度更快。) 如果在 Postgres 12或更早版本中 需要NULL安全查

  • 问题内容: 我知道运算符的含义是大于或等于,但是我已经在一些源代码中看到了。该运算符是什么意思? 这是代码: 问题答案: 这是一个箭头功能。 箭头函数是ECMAscript 6引入的一种短语法,可以与使用函数表达式的方式类似地使用。换句话说,您经常可以使用它们代替诸如的表达式。但是它们有一些重要的区别。例如,它们不绑定自己的值(请参见下面的讨论)。 箭头功能是ECMAscript 6规范的一部分。

  • 我目前正在Codecademy上学习JavaScript,我遇到了一些问题。我在一个叫做“建造石头,布,剪刀”的部分,有一个部分有一个条件,如果数学。random()大于0.33小于0.66,计算机将选择纸张。我的问题是,如何建立一个if条件,即某个东西大于X,但同时小于Y?

  • 我想找到给定正整数数组中元素的最大数目,使得它们的和小于或等于给定的k。例如,我有一个数组 答案是3,因为1,2,3是求和6的最大元素。

  • 此示例代码是否在所有系统上导致两个相等的值?