Caricare N numeri e dire se l'array è palindromo

[SOL] Java - Esercizio nr. 63


Spiegazione del Programma Palindromo

Cosa fa questo programma?

Questo programma Java controlla se una sequenza di numeri inseriti dall'utente forma un palindromo. Un palindromo è una sequenza che si legge allo stesso modo sia da sinistra verso destra che da destra verso sinistra.

Analisi del codice

import java.util.Scanner;

public class Palindromo {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

Fase 1: Preparazione

Il programma inizia importando la classe Scanner per leggere l'input dell'utente e creando un oggetto input per gestire l'inserimento dei dati.

System.out.print("Quanti numeri vuoi inserire? ");
int n = input.nextInt();

int[] numeri = new int[n];

Fase 2: Dimensionamento dell'array

  • Chiede all'utente quanti numeri vuole inserire
  • Crea un array di interi chiamato numeri con la dimensione specificata
// Caricamento
for (int i = 0; i < n; i++) {
    System.out.print("Inserisci il numero " + (i + 1) + ": ");
    numeri[i] = input.nextInt();
}

Fase 3: Caricamento dei dati

Un ciclo for riempie l'array chiedendo all'utente di inserire un numero alla volta. Nota che (i + 1) serve per mostrare "numero 1", "numero 2", ecc. invece di "numero 0", "numero 1".

// Controllo palindromo
boolean palindromo = true;
for (int i = 0; i < n / 2; i++) {
    if (numeri[i] != numeri[n - 1 - i]) {
        palindromo = false;
    }
}

Fase 4: Controllo del palindromo

Questa è la parte più importante del programma:

  • Variabile palindromo: inizialmente impostata a true, diventa false se trova una differenza
  • Ciclo ottimizzato: controlla solo fino a n / 2 perché confronta gli elementi simmetrici
  • Confronto simmetrico: numeri[i] viene confrontato con numeri[n - 1 - i]

Come funziona il confronto simmetrico?

  • Se l'array ha 5 elementi (indici 0,1,2,3,4):
    • i=0: confronta numeri[0] con numeri[4]
    • i=1: confronta numeri[1] con numeri[3]
    • i=2: si ferma perché 2 < 5/2 è falso
// Risultato
if (palindromo) {
    System.out.println("L'array e' palindromo");
} else {
    System.out.println("L'array NON e' palindromo");
}

input.close();

Fase 5: Visualizzazione del risultato

  • Stampa il risultato basandosi sul valore della variabile palindromo
  • Chiude lo Scanner per liberare le risorse

Esempi pratici

Esempio 1 - Palindromo

Input: 1, 2, 3, 2, 1 Controlli:

  • 1 == 1 ✓
  • 2 == 2 ✓ Risultato: "L'array e' palindromo"

Esempio 2 - Non palindromo

Input: 1, 2, 3, 4, 5 Controlli:

  • 1 != 5 ✗ Risultato: "L'array NON e' palindromo"

Punti chiave da ricordare

  • Il programma è efficiente perché controlla solo metà degli elementi
  • Usa una strategia di confronto simmetrico per verificare il palindromo
  • La variabile palindromo funziona come una bandiera (flag) che cambia stato quando trova una differenza

import java.util.Scanner;

public class Palindromo {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.print("Quanti numeri vuoi inserire? ");
        int n = input.nextInt();

        int[] numeri = new int[n];

        // Caricamento
        for (int i = 0; i < n; i++) {
            System.out.print("Inserisci il numero " + (i + 1) + ": ");
            numeri[i] = input.nextInt();
        }

        // Controllo palindromo
        boolean palindromo = true;
        for (int i = 0; i < n / 2; i++) {
            if (numeri[i] != numeri[n - 1 - i]) {
                palindromo = false;
            }
        }

        // Risultato
        if (palindromo) {
            System.out.println("L'array e' palindromo");
        } else {
            System.out.println("L'array NON e' palindromo");
        }

        input.close();
    }
}