코딩항해기

[과제/JAVA] 멘토시리즈 : 자바 - 17 람다식 응용문제 본문

problem solving/문제 풀기

[과제/JAVA] 멘토시리즈 : 자바 - 17 람다식 응용문제

miniBcake 2024. 7. 27. 14:40

 

 

 

 

[JAVA] 람다식 (익명 메서드) (+함수형 인터페이스)

람다식 Lambda expression함수의 이름이 없는 익명함수(anonymous function)를 만들기 위한 표현식이다.  식과 문값 Value식이 평가되어 생성된 결과로, 프로그램이 조작할 수 있는 어떤 표현이다.식 Express

minibcake.tistory.com

 

 

문제 1. 다음 중 람다식에 대한 설명으로 틀린 것은 무엇입니까?

4번이다. 함수형인터페이스 표시 어노테이션은 함수형인터페이스임을 명시하는 역할일 뿐, 어노테이션이 없어도 조건을 만족한다면 람다식을 사용할 수 있다.

 

 

 

문제 2. 다음 중 람다식 표현이 잘못된 것을 고르세요.

람다식을 사용할 때는 매개변수의 타입을 생략한다. 따라서 1번이 잘못되었다.

 

 

 

문제 3. 다음 코드는 컴파일 에러가 발생합니다. 그 이유는 무엇이며, 어떻게 해결해야할까요?

먼저 람다식에서 선언한 적 없는 변수를 반환하고 있는 오류가 있으며,

람다식 내부의 지역변수가 final이거나 사실상 final이어야한다는 조건을 위반했기 때문에 발생한 오류이다.

별도의 지역변수를 선언하여 작성해주면 오류 없이 작동된다.

package home0727;

import java.math.BigDecimal;
import java.math.RoundingMode;

interface Calc {
	double round(int point);
}

public class Test01 {
	public static void main(String[] args) {
		double val = 34.1254886;
		
		Calc cal = (point)->{
			double val1 = new BigDecimal(val).setScale(point, RoundingMode.HALF_UP).doubleValue();
			return val1;
		};
		
		System.out.println("소수점 둘째 자리 반올림 : "+cal.round(2));
	}
}

 

 

 

문제 4. 두 수의 크기를 비교하는 프로그램을 만들어 사용하려고 합니다. 해당 기능을 함수형 인터페이스로 선언하고 람다식을 사용해 구현해보세요.

package home0727;

interface Compare {
	boolean check(int num1, int num2);
}

public class Test02 {
	public static void main(String[] args) {
		int num01 = 20;
		int num02 = 30;
		
		Compare com = (num1, num2) -> num1 > num2;
		
		if(com.check(num01, num02)) {
			System.out.println(num01+"이 더 큽니다.");
		}
		else {
			System.out.println(num02+"이 더 큽니다.");
		}
	}
}