Можете помочь с задачей на Java?
Четных больше Даны 3 целых числа. Требуется определить, есть ли среди этих чисел хотя бы два четных.
Входные данные Во входном потоке в единственной строке через пробел записаны 3 целых числа (−109≤x≤109).
Выходные данные Выведите true, если среди данных чисел есть хотя бы два четных, или false в противном случае.
Вот код:
import java.util.Scanner;
public class nameclass {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double a = sc.nextDouble();
double b = sc.nextDouble();
double c = sc.nextDouble();
boolean v = (a/2 || b/2 || c/2);
System.out.print(v);
}
}
Ответы (3 шт):
Автор решения: MBo
→ Ссылка
Вместо nextdouble стоит использовать nextInt, не так ли?
Сложите
a&1+b&1+c&1
и посмотрите на результат
boolean v = ((a&1)+(b&1)+(c&1)) < 2;
System.out.print(v);
Автор решения: Труфальдино
→ Ссылка
int x1 = 14;
int x2 = -28;
int x3 = 97;
System.out.println(Integer.toBinaryString(x1).endsWith("0")
||Integer.toBinaryString(x3).endsWith("0")
||Integer.toBinaryString(x3).endsWith("0"));
но думаю это не оптимальный путь
Автор решения: Vladimir Glinskikh
→ Ссылка
При помощи функциональных интерфейсов можно гибко фильтровать как тебе нужно.
public class FindTwoEvenNumbers {
public static boolean filterNumbers(List<Integer> inventory, NumberPredicate predicate) {
boolean b = false;
for (Integer i : inventory) {
if (predicate.test(i)) {
b = true;
}
}
return b;
}
public static class NumbersEven implements NumberPredicate {
int count;
@Override
public boolean test(Integer integer) {
if (integer % 2 == 0) {
count++;
}
return count >= 2;
}
}
public interface NumberPredicate{
boolean test(Integer integer);
}
}
И тестируем:
class FindTwoEvenNumbersTest {
@Test
void filterNumbers() {
assertTrue(FindTwoEvenNumbers.filterNumbers(Arrays.asList(2, 3, 4), new NumbersEven()));
assertTrue(FindTwoEvenNumbers.filterNumbers(Arrays.asList(12, 20, 4), new NumbersEven()));
assertTrue(FindTwoEvenNumbers.filterNumbers(Arrays.asList(3, 18, 2), new NumbersEven()));
assertFalse(FindTwoEvenNumbers.filterNumbers(Arrays.asList(3, 5, 13), new NumbersEven()));
assertFalse(FindTwoEvenNumbers.filterNumbers(Arrays.asList(3, 2, 17), new NumbersEven()));
assertFalse(FindTwoEvenNumbers.filterNumbers(Arrays.asList(2, 13, 23), new NumbersEven()));
}
}
Если хочешь запустить в методе main:
public static void main(String[] args) {
List<Integer> lists = Arrays.asList(2, 5, 10);
System.out.println(filterNumbers(lists, new NumbersEven()));
}