Menu
Coddy logo textTech

Riepilogo - Flusso di controllo

Fa parte della sezione Logica e flusso del percorso Java di Coddy. Lezione 39 di 59.

challenge icon

Sfida

Crea un metodo chiamato processArray che accetta due argomenti:

  1. Un array 1D di Object (data) contenente tipi misti (Integer, String o Double)
  2. Una String (type) per il tipo di elaborazione: "sum" o "find"

La tua soluzione dovrebbe dimostrare questi concetti:

  • Usa clausole di guardia per convalidare l'input all'inizio del metodo
  • Usa il pattern matching di instanceof per verificare e convertire i tipi (ad es., if (value instanceof Integer i))
  • Usa espressioni switch con sintassi a freccia (ad es., switch (type) -> {)
  • Usa cicli etichettati con break o continue (ad es., search: for())

Regole di elaborazione:

  • "sum": Somma tutti i valori numerici (ignora le stringhe)
  • "find": Trova il primo valore numerico maggiore di 100

I messaggi restituiti dovrebbero essere:

  • Se l'array è null o vuoto: restituisci "Invalid input"
  • Se il tipo non è valido: restituisci "Invalid type"
  • Per "sum": restituisci "Sum: X"
  • Per "find": restituisci la posizione di quel valore in data, oppure "Not found" se nessun valore numerico è maggiore di 100

Provalo tu

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) {
        // Scrivi qui il tuo codice
    }
    
    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));
    }
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Java online