Несовместимые типы: java.lang.String не может быть преобразован в логическое значение

Я пытаюсь вызвать метод в операторе if, но все равно получаю следующую ошибку.

несовместимые типы: java.lang.String не может быть преобразован в логическое значение

Когда вы запускаете метод getName, он должен проверить штрих-код, который вводит пользователь, и, если он совпадает, вернет String.

Это класс и метод, которым я вызываю метод.

public class ItemTable

   public String getName (Item x)
   {
    String name = null;

    if (x.getBarcode ("00001")) 
        name = "Bread";

    return name;
   }

Это метод / класс, из которого я звоню.

public class Item

private String barcode;

public Item (String pBarcode)
{
    barcode = pBarcode;
}

public String getBarcode (String barcode)
{
    return barcode;
}

person Ayden Brownhill    schedule 01.05.2016    source источник


Ответы (3)


Я никогда не видел, чтобы метод получателя принимал параметры. Метод getBarcode должен возвращать фактический штрих-код вашего объекта Item, верно? Тот, который вы отправляете в метод конструктора. Если ваш ответ на вопрос выше - да, то метод getBarcode не требует аргументов и следует изменить if, например:

public String getBarcode()
{
return barcode;
}

А также

if(x.getBarcode().equals("00001"))
    name = "Bread";
person Jorge Solis    schedule 01.05.2016

if (x.getBarcode ("00001")) 

Если вы посмотрите внимательно, if должно иметь значение boolean сбоку, чтобы проверить true или false. Где ваш метод возвращает String.

person Suresh Atta    schedule 01.05.2016

Для работы условного выражения требуется логическое значение. Таким образом, вставка метода, возвращающего строку, не сработает. Вам нужно сравнить «00001» с другой строкой, чтобы условное выражение работало в вашем случае.

Чтобы решить эту проблему, необходимо сравнение строки. так ...

if(x.getBarcode("00001").equals("00001")) //equals returns a boolean if the strings are the same.
{
    name = "bread";
}

Вы также должны использовать this.barcode, чтобы указать, хотите ли вы вернуть штрих-код в параметрах или частную переменную barcode.

person DarkV1    schedule 01.05.2016