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+"이 더 큽니다.");
}
}
}