Menu
Coddy logo textTech

まとめ - 制御フロー

CoddyのJavaジャーニー「ロジックとフロー」セクションの一部 — レッスン 39/59。

challenge icon

チャレンジ

processArray という名前のメソッドを作成し、2 つの引数を受け取るようにします:

  1. 混合型(Integer、String、または Double)を格納した Objects の 1 次元配列(data
  2. 処理タイプを示す String(type):"sum" または "find"

解決策では以下の概念を実証してください:

  • メソッドの先頭でガード節を使用して入力を検証する
  • 型のチェックとキャストに instanceof パターンマッチングを使用する(例: if (value instanceof Integer i)
  • 矢印構文を使用した switch 式(例: switch (type) -> {
  • break または continue を使用したラベル付きループ(例: search: for()

処理ルール:

  • "sum": すべての数値値を加算(文字列は無視)
  • "find": 100 より大きい最初の数値値を見つける

戻り値のメッセージは以下のようになります:

  • 配列が null または空の場合: "Invalid input" を返す
  • type が無効な場合: "Invalid type" を返す
  • "sum" の場合: "Sum: X" を返す
  • "find" の場合: 見つかった値のインデックスまたは "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));
    }
}

ロジックとフローのすべてのレッスン