【问题标题】:Comparing a string and an object property比较字符串和对象属性
【发布时间】:2019-03-09 16:28:00
【问题描述】:

我正在尝试使用 .equals() 将字符串与对象属性进行比较,但即使条件为真,该条件仍会失败。 我尝试使用 trim() 去除尾随空格,但仍然失败。

这是我的代码:

if (status) {
        inventoryList = allInventory.getInventory();
        assert assetId != null;
        for (Inventory inventory : inventoryList) {
            if (assetId.trim().equals(inventory.getProductCode().trim())) {

                //get the current quantity that exists

                new_quantity.setValue(0);

                new_quantity.setMaxValue(inventory.getQuantity());
                inventoryId = inventory.getId();
                return;

            } else {
                // new_quantity.setVisibility(View.GONE);
                decrement.setEnabled(false);
                AlertDialog.Builder alert = new AlertDialog.Builder(this);
                alert.setTitle("Product not found ");
                // prevent cancel of AlertDialog on click of back button and outside touch
                alert.setCancelable(false);
                alert.setMessage("Product is not in inventory. Do you want to continue scanning?");

                alert.setNegativeButton("No", (dialog, which) -> {
                            onBackPressed();
                            dialog.dismiss();
                        }
                );
                alert.setPositiveButton("Yes", (dialog, which) -> {
                    Intent scanAsset = new Intent(this, ScanActivity.class);
                    scanAsset.putExtra("building", building);
                    scanAsset.putExtra("room", room);
                    scanAsset.putExtra("department", depart);
                    scanAsset.putExtra("TAG", "E");
                    startActivity(scanAsset);
                    dialog.dismiss();
                });
                AlertDialog dialog = alert.create();
                dialog.show();
            }

        }

【问题讨论】:

  • 几点注意事项: 1) 具体是哪一行遇到问题?抱歉,我不会解析这段代码的整个上下文来尝试帮助解决一个简单的.equals() 问题。 2)您确定要比较两个字符串吗?如果一个对象不是字符串,它将始终是false。 3) 您也可以尝试在您的自定义对象上覆盖equals()(如果您正在使用一个),这样您就可以比较两个对象,而无需将一个对象转换为String。如果您在这里没有使用自定义对象,则绝对不建议这样做。

标签: java android string object comparison


【解决方案1】:

我想指出 oracle 文档,其中说:

将此字符串与指定对象进行比较。 结果为真当且仅当参数不为 null 并且是一个字符串对象,它表示与此对象相同的字符序列。

【讨论】:

  • String对象是什么意思?
  • 基本上,String 不是 Java 中的原始数据类型。它是一个由 char 序列组成的对象。我希望这就是您的要求
【解决方案2】:

尝试使用 equalsIgnoreCase() 代替 equals

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-22
    • 2018-10-17
    • 1970-01-01
    • 2012-04-04
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多