Esercizio di laboratorio
Argomento: cicli, decisioni e variabili booleane; manipolazione di stringhe.
Scrivere un programma che verifica se una stringa, introdotta dall'utente tramite lo standard input (un'intera riga), è una palindrome.
Suggerimento: una stringa è una palindrome se è composta da una sequenza di caratteri (anche non alfabetici) che possa essere letta allo stesso identico modo anche al contrario (es. "radar", "anna", "inni", "xyz%u%zyx").
Il programma deve eseguire il minimo numero di confronti necessari per determinare se la stringa è una palindrome.
Verificare il corretto funzionamento del programma con:
- Una stringa palindroma di lunghezza pari.
- Una stringa palindroma di lunghezza dispari.
- Una stringa non palindroma di lunghezza pari.
- Una stringa non palindroma di lunghezza dispari.
- Una stringa di lunghezza unitaria (che è ovviamente palindroma).
- Una stringa di lunghezza zero (che è ragionevole definire palindroma).
Soluzione
start end, ecco una possibile soluzione: notare l'uso delle variabili e che indirizzano caratteri della stringa partendo rispettivamente dall'inizio e dalla fine di essa. Controllate che la condizione del ciclo while (start<end) sia corretta dal punto di vista logico, nei due casi in cui la lunghezza della stringa sia un numero pari o un numero dispari.
import java.util.Scanner;
public class PalindromeTester{ public static void main(String[] args){ Scanner in = new Scanner(System.in);
System.out.println("Inserire stringa:");
String s = in.nextLine();
int start = 0;
int end = s.length() -1;
boolean isPalindrome = true;
while (start < end && isPalindrome){ if (s.substring(start, start+1).equals(s.substring(end, end +1)))
// Oppure, equivalentemente, if (s.charAt(start) == s.charAt(end)){ start++;
end--;}
else
isPalindrome = false;}
if(isPalindrome)
System.out.println("E` una palindrome!!");
else System.out.println("Non e` una palindrome...");}}