Ответы пользователя по тегу Java
  • Почему используется декремент в данном цикле while?

    @kpechenenko
    Может быть новые имена переменных помогут вам разобраться в том, что происходит.
    class Power {
        public static void main(String args[]) {
            int осталосьСтолькоРазУмножитьРезультатНаДвойкуДляОтчета;
            int результат;
            for (int текущаяСтепеньДвойкиДляОтчета = 0; текущаяСтепеньДвойкиДляОтчета < 10; текущаяСтепеньДвойкиДляОтчета++) {
                результат = 1;
                осталосьСтолькоРазУмножитьРезультатНаДвойкуДляОтчета = текущаяСтепеньДвойкиДляОтчета;
                while (осталосьСтолькоРазУмножитьРезультатНаДвойкуДляОтчета > 0) {
                    результат *= 2;
                    осталосьСтолькоРазУмножитьРезультатНаДвойкуДляОтчета--;
                }
                System.out.println("2 в степени " + текущаяСтепеньДвойкиДляОтчета + " равно " + результат);
            }
        }
    }
    Ответ написан
    Комментировать
  • Как с помощью Predicate использовать сортировку в масиве?

    @kpechenenko
    Никак.

    А зачем вам сортировать массив в данной задаче?

    Исходя из формулировки прикрепленного задания решение может выглядеть следующим образом:
    public class Main {
        private static int sumEven(int[] values, Predicate<Integer> test) {
            return Arrays.stream(values)
                    .filter(test::test)
                    .sum();
        }
    
        public static void main(String[] args) {
            int[] values = {1, 2, 3, 4, 5, 6, 7, 8};
            int sumOfEvenValues = Main.sumEven(values, x -> x % 2 == 0);
            System.out.println("Sum of even is " + sumOfEvenValues);
            List<String> strings = List.of(
                    "JUG",
                    "JPoint",
                    "PyConf",
                    "Joker"
            );
            Main.printJStr(strings, s -> s.startsWith("J"));
        }
    
        private static void printJStr(List<String> strings, Predicate<String> test) {
            strings.stream()
                    .filter(test)
                    .forEach(System.out::println);
        }
    }
    Ответ написан
    Комментировать