Сравнение строки и свойства объекта

#java #android #string #object #comparison

#java #Android #строка #объект #сравнение

Вопрос:

Я пытаюсь сравнить строку со свойством объекта, используя .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. Пара замечаний: 1) Конкретно с какой строкой у вас возникли проблемы? Извините, но я не собираюсь анализировать весь контекст этого кода, чтобы попытаться помочь с простой .equals() проблемой. 2) Вы уверены, что сравниваете две строки? Если один объект не является строкой, он всегда ею будет false . 3) Вы также можете попробовать переопределить equals() свой пользовательский объект (если вы его используете), чтобы вы могли сравнивать оба объекта, не преобразуя один в String . Это определенно не рекомендуется, если вы не используете пользовательский объект здесь.

Ответ №1:

Я хотел бы указать на документы oracle, в которых говорится:

Сравнивает эту строку с указанным объектом. Результат является истинным тогда и только тогда, когда аргумент не равен null и является объектом String, который представляет ту же последовательность символов, что и этот объект.

введите описание изображения здесь

Комментарии:

1. что это означает под строковым объектом?

2. В принципе, String не является примитивным типом данных в Java. Это объект, состоящий из последовательности символов. Я надеюсь, что это то, о чем вы просите

Ответ №2:

попробуйте использовать equalsIgnoreCase() вместо equals