@SankaSanka

Что от меня хочет лямбда?

public class test{
	
	interface Chislo {
		public boolean chislo(int x);
	}
	
	public static void main(String[] args) {
	    final int x= 10;

	    Chislo a = x->{ 
	    if ((x%13) == 0) return true;
	    return false;
	    };
	    
	    	System.out.println(a);
	    }
	    
	    
	
	}


я от него хочу чтоб лямбда возвращала тру если x делится без остатка на 13 и наоборот.

что я не так делаю?(
  • Вопрос задан
  • 331 просмотр
Решения вопроса 3
@faoxy
В вашем случае лямбда не сработала т.к. вы не сделали вызов a.chislo(x).  А вообще можно сделать гораздо проще:
public static void main(String[] args) {
        Predicate<Integer> isDivided13 = x -> (x%13) == 0;
        Boolean result = isDivided13.test(10);
        System.out.println(result);
    }


Здесь в первой строчке за main определяется поведение (x -> (x%13) == 0). И в следующей запускается вычисление для конкретного значения с помощью вызова метода test. Здесь стоит отметить, что интерфейс Predicate является стандартным конструктором типа и принимает в качестве дженерика тип входного значения (аргумент метода test).
Ответ написан
Комментировать
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Лямбда от тебя ничего не хочет.
Ты её не вызвал. а()
if можно заменить на expression-body x -> x % 13 == 0
Ответ написан
Комментировать
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Во-первых, зачем лямбде интерфейс, чем не устраивают стандартные? Во-вторых, зачем лямбда принимает аргумент, если она всё равно захватывает значение переменной x? В-третьих, зачем лямбде блок в теле? В-четвёртых, лямбду надо вызвать.
public static void main(String[] args) {
    final int x= 10;
    Supplier<Boolean> a = () -> (x%13) == 0;
    System.out.println(a.get());
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы