Как заставить этот метод всегда возвращать неотрицательное значение?

Я неправильно ответил на тест, может кто-нибудь объяснить правильный ответ?

«Каким должно быть отсутствующее выражение if, чтобы этот метод всегда возвращал неотрицательное значение?»

int mystery2 (int n) { 
  if (<< expression >>) { 
    return -n;
  } else { 
    return n; 
  } 
}

МНОГОВЫБОР ОТВЕТОВ

  1. п != 0
  2. п > 0
  3. n > 1 <-- мой ответ
  4. п < 0

ответ 4. упр. если n = -3, вы вернете -(-3), то есть 3. т.е. когда n отрицательное, вы умножаете его на -1, чтобы оно стало положительным.

authorizeduser 14.08.2024 07:30

упс. пропустил отрицательный результат в первом операторе if. В любом случае, для такого простого вопроса лучший вариант — написать его и выяснить, каким должен быть результат в вашей собственной IDE.

BIBOO unit 14.08.2024 07:32

Если вы не уверены, как решить эту задачу, вы всегда можете попробовать доказать ее с помощью контрпримера (больше математики, чем программирования, но неважно). Для трех из четырех вариантов ответа вы можете придумать вариант для n, который вернет результат отрицательное число.

Andrew Yim 14.08.2024 07:35

@BIBOOunit вам даже не нужна IDE, для этого простого выражения вы можете использовать jshell, чтобы опробовать его из командной строки

cyberbrain 14.08.2024 07:36

да, я не знал о jshell. Это приятно знать

BIBOO unit 14.08.2024 07:39

Технически ни один из ответов не является правильным. Если n равно Integer.MIN_VALUE, то -n == n, поэтому метод вернет отрицательное число независимо от условия.

Sweeper 14.08.2024 08:13
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
6
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Правильным выражением является n < 0, поскольку оно гарантирует, что метод возвращает неотрицательное значение путем преобразования любых отрицательных входных данных в положительные выходные данные, оставляя при этом неотрицательные входные данные неизменными.

В этом столько смысла! спасибо за помощь :)

x GutterRat x 14.08.2024 07:38

@xGutterRatx Рад, что вы нашли ответ! Пожалуйста, примите его, поставив галочку, чтобы выразить свою признательность и сообщить, что ваша проблема решена.

Andrew Yim 14.08.2024 07:48

Хотя n < 0, вероятно, и есть предполагаемый ответ, он неверен. Когда n равен Integer.MIN_VALUE, -n по-прежнему отрицательный.

Sweeper 14.08.2024 08:17

Вот как выражение всегда возвращает неотрицательное значение.

if (n < 0) {
    return -n;
} else {
    return n;
}

Другие вопросы по теме