Java - сделать логический метод isHigherGeneration () вернуть ДА / НЕТ - PullRequest
0 голосов
/ 03 ноября 2019

У меня небольшие проблемы с домашней работой. У меня должен быть логический метод isHigherGeneration (), который сравнивает 2 объекта CPU в зависимости от их генерации. Я смог заставить мой код сравнивать 2 объекта, но мне нужен результат, чтобы вернуть YES / NO вместо true / false. Я попытался создать строку и преобразовать ее в логическое значение, но это не сработало. Может кто-то помочь мне, пожалуйста? Вот мой код:

public boolean isHigherGeneration(CPU cpu){
        String YES = "YES";
        String NO = "NO";
        boolean t = Boolean.valueOf(YES);
        boolean n = Boolean.valueOf(NO);

        if (this.generation > cpu.generation)
            return t ;
        else
            return n;
    }

Заранее благодарю за помощь:)

Ответы [ 2 ]

0 голосов
/ 03 ноября 2019

Это звучит из вопроса, как будто он не хочет, чтобы вы возвращали boolean, но String со значением YES или значением NO вместо boolean, так что вынужно перевести результат выражения boolean в String со значением YES или значением NO.

Таким образом, в этом случае нет необходимости возиться сboolean в вашем коде. Вы можете сравнить генерацию CPU и просто вернуть YES, если значение true и NO, если значение false:

public String isHigherGeneration(CPU cpu) {
    if (generation > cpu.generation) {
        return "YES";
    } else {
        return "NO";
    }
}

Редактировать: Из звуков требованийвам нужен метод boolean, который возвращает String, что невозможно. (Это все равно, что сказать, что вы хотите купить яблоко, но в итоге получите грушу.) Если вам нужен результат String и метод boolean, вы можете разделить их на три, например:

// Boolean method
public boolean isHigherGeneration(CPU cpu) {
    return generation > cpu.generation;
}
// String method
public String toYesNo(boolean result) {
    if (result) {
        return "YES";
    } else {
        return "NO";
    }
}
// Converter
public String isHigherGenerationYesNo(CPU cpu) {
    return toYesNo(isHigherGeneration(cpu));
}

но это все кажется глупым. Я думаю, может быть, у нас возникло недоразумение в этом вопросе. Не могли бы вы опубликовать вопрос дословно, чтобы мы могли убедиться, что поняли его правильно?

0 голосов
/ 03 ноября 2019

Если вы хотите вернуть «YES» или «NO», тип возвращаемого значения метода должен быть String:

public String isHigherGeneration(CPU cpu) {
    if (this.generation > cpu.generation)
        return "YES";
    else
        return "NO";
}

или

public String isHigherGeneration(CPU cpu) {
    return this.generation > cpu.generation ? "YES" : "NO";
}
...