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

66
4

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

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

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

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

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;
}

спросил(а) 2020-04-04T00:48:07+03:00 3 месяца назад
1
Решение
77

if (x.getBarcode ("00001")) 

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

ответил(а) 2020-04-04T01:00:19.291219+03:00 3 месяца назад
39

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

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

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

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

ответил(а) 2020-04-04T00:48:07+03:00 3 месяца назад
39

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

public String getBarcode()
{
return barcode;
}

А также

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

ответил(а) 2020-04-04T00:48:07+03:00 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема