Menu
Coddy logo textTech

Metodo WithIndex

Fa parte della sezione Fondamenti del percorso Kotlin di Coddy. Lezione 75 di 93.

Quando iteri su una lista, spesso devi conoscere non solo l’elemento, ma anche la sua posizione. Il metodo withIndex() ti fornisce entrambi in una volta sola.

Chiama withIndex() su qualsiasi lista per ottenere coppie di indice e valore:

val colors = listOf("Red", "Green", "Blue")
for ((index, color) in colors.withIndex()) {
    println("$index: $color")
}
// Output:
// 0: Red
// 1: Green
// 2: Blue

Nota la sintassi all'interno delle parentesi: (index, color). Questa tecnica si chiama destrutturazione e assegna l'indice e il valore a variabili separate. Puoi dare a queste variabili i nomi più adatti al tuo codice.

Questo approccio è più pulito che tenere traccia manualmente di un indice con una variabile contatore. È particolarmente utile quando devi visualizzare elenchi numerati o eseguire azioni diverse in base alla posizione:

val tasks = listOf("Wake up", "Exercise", "Eat breakfast")
for ((i, task) in tasks.withIndex()) {
    println("Step ${i + 1}: $task")
}
// Output:
// Step 1: Wake up
// Step 2: Exercise
// Step 3: Eat breakfast
challenge icon

Sfida

Medio

Riceverai in input un elenco di nomi di studenti. Leggi prima il numero di studenti, poi leggi ogni nome.

Usando withIndex(), stampa ogni studente con il relativo numero in classifica (a partire da 1, non da 0).

Formato dell'input:

  • Prima riga: un intero n che rappresenta il numero di studenti
  • Le successive n righe: nomi degli studenti (stringhe)

Formato dell'output:

Stampa ogni studente su una riga separata nel formato:

Rank 1: Alice
Rank 2: Bob
Rank 3: Charlie

Ricorda che withIndex() fornisce indici a partire da 0, quindi dovrai adeguarli affinché i numeri in classifica partano da 1.

Provalo tu

fun main() {
    // Leggi il numero di studenti
    val n = readLine()!!.toInt()
    
    // Leggi i nomi degli studenti in una lista
    val students = mutableListOf<String>()
    for (i in 1..n) {
        students.add(readLine()!!)
    }
    
    // TODO: Scrivi il tuo codice qui sotto
    // Usa withIndex() per scorrere students e stampare la posizione in classifica di ciascuno
    // Ricorda: withIndex() fornisce indici a partire da 0, ma le posizioni in classifica devono partire da 1
    
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground Kotlin