Более или менее условие всегда допустимо

#java #if-statement

#java #if-оператор

Вопрос:

У меня есть метод с двумя двойными параметрами: 1. значение, которое я хочу проверить 2. значение, с помощью которого я хочу его проверить, это либо 0,99, либо 1,0, но не фиксированные значения, возвращаемое значение равно 2.

Ожидаемый результат: если 1 меньше или равно 0,99, то это хорошо, но если 1 больше или равно 1,0, это плохо

 static Double check (Double var1, Double var2) {
    Double obj= 0.0;

    if (var1 >= var2)
        obj = var2;
    else if (var1 <= var2)
        obj = var2;
    return obj; }
  

var1 вводит одно и то же для двух раз, но var2 является измененным,
Проблема в том, что если значение меньше 0,99 (например, 0,5), оно всегда меньше 1,0, а если оно больше 1,0, оно всегда больше 0,99, это дает мне два результата

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

1. В вашем коде вы всегда присваиваете var2 obj независимо от того, if или else

2. Итак, сначала проверьте, равно ли значение:> 1. Кстати. что должно произойти со значениями от 0.99 до 1?

3. Почему бы не использовать примитивный тип Double ? Зачем вам нужно указывать else? Нет способа достичь этого.

4. @Henry Перед вводом метода я беру ближайшие двухзначные числа после десятичной точки

5. Почему вы пытаетесь return false в Object (возвращающем) методе? Double технически неверно. Чувствителен к регистру. В любом случае, как в if , так и в else операторах, вы возвращаете одни и те же значения.

Ответ №1:

Когда вы точно говорите, что var2 равен либо 0.99, либо 1.0, тогда вы можете просто проверить, как это правильно:

 static boolean check (Double var1) {

    return !(var1 >= 1.0);
}
  

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

1. Нет, это не фиксированное значение

2. Но согласно вашему объяснению ожидаемого результата («Ожидаемый результат, если 1 меньше или равно 0,99, то это хорошо, но если 1 больше или равно 1,0, это плохо»), это возможное решение. Возможно, вам нужно объяснить ожидаемый результат немного более подробно, чтобы мы могли помочь.

3. Не разделяйте логические возвраты подобным образом. return !(var1 >= 1.0) .

Ответ №2:

Почему вы пытаетесь return false в Object (возвращающем) методе? Чувствителен к регистру. В любом случае, как в if , так и в else операторах, вы возвращаете одни и те же значения.

 static double check (Double var1, Double var2) { // You are returning doubles. Not objects.
   double obj;

   if (var1 >= var2) {
      obj = var1; // not var2, otherwise the else-if statement would be the exact same
      return obj; 
   }
   else if (var1 < var2) {
      obj = var2;
      return obj; 
   }
   else
      return false; // Throws error, I don't know what you want to do with this.
}
  

Не забывайте, что java чувствительна к регистру.

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

1. Это было изменено, теперь это исправлено.

2. Мне нужен var2, который был передан для проверки другим методом (предыдущий метод), поэтому, если бы было передано значение 0.99, я бы знал, что это хорошо, но оно всегда передает значения 0.99 и 1.0

3. Что вы имеете в виду? Я не понимаю. Предложение Дали Реджиша кажется правильным. Если вы не можете доказать его неправоту (не то, что вы просили), то отметьте это как правильное. То же самое касается всех. Вы не обязаны говорить нам, но подумайте об этом.

Ответ №3:

Код может помочь вам:

 static Object check (Double var1, Double var2) {
   Object obj=new Object();

   if (var1 >= var2) {
      obj = var1;
      return obj; 
   }
   else {
      obj = var2;
      return obj; 
   }
}
  

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

1. При каких обстоятельствах вы ожидаете return false; запуска?