Menu
Coddy logo textTech

복습 - 제어 흐름

Coddy Java 여정의 논리와 흐름 섹션에 포함된 레슨 — 59개 중 39번째.

challenge icon

챌린지

두 개의 인자를 받는 processArray라는 이름의 메서드를 생성하세요:

  1. 혼합된 타입(Integer, String, 또는 Double)을 포함하는 Object의 1D 배열(data)
  2. 처리 타입을 위한 String(type): "sum" 또는 "find"

당신의 솔루션은 다음 개념들을 보여주어야 합니다:

  • 메서드 시작 부분에서 입력을 검증하기 위해 가드 클로즈(guard clauses)를 사용하세요
  • 타입을 확인하고 캐스팅하기 위해 instanceof 패턴 매칭을 사용하세요 (예: if (value instanceof Integer i))
  • 화살표 구문을 사용하는 switch 표현식을 사용하세요 (예: switch (type) -> {)
  • break 또는 continue와 함께 레이블이 지정된 루프를 사용하세요 (예: search: for())

처리 규칙:

  • "sum": 모든 숫자 값을 더합니다 (문자열은 무시)
  • "find": 100보다 큰 첫 번째 숫자 값을 찾습니다

반환 메시지는 다음과 같아야 합니다:

  • 배열이 null이거나 비어있는 경우: "Invalid input"을 반환
  • 타입이 유효하지 않은 경우: "Invalid type"을 반환
  • "sum"의 경우: "Sum: X"를 반환
  • "find"의 경우: "Index: X"를 반환하며, 여기서 X는 data에서 해당 값의 위치입니다. 100보다 큰 숫자 값이 없으면 "Not found"를 반환합니다.

직접 해보기

import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;

public class Main {
    public static String processArray(Object[] data, String type) {
        // 여기에 코드를 작성하세요
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String dataJson = scanner.nextLine();
        String type = scanner.nextLine();
        
        Type arrayType = new TypeToken<Object[]>(){}.getType();
        Object[] data = new Gson().fromJson(dataJson, arrayType);
        
        System.out.println(processArray(data, type));
    }
}

논리와 흐름의 모든 레슨