まとめ - 制御フロー
CoddyのJavaジャーニー「ロジックとフロー」セクションの一部 — レッスン 39/59。
チャレンジ
2つの引数を受け取る processArray という名前のメソッドを作成してください:
- 混合型(Integer、String、またはDouble)を含むObjectの1次元配列(
data) - 処理タイプを指定するString(
type): "sum" または "find"
あなたのソリューションは、以下の概念を実証する必要があります:
- メソッドの開始時にガード句を使用して入力を検証する
- 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" の場合: その値の
data内の位置を X とした "Index: X"、または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));
}
}