import java.util.List;
import java.util.ListIterator;
import java.util.ArrayList;

/**
 * {@link <a href=
 * "https://[Log in to view URL]" target
 * ="_blank">Strutture iterative</a>}
 * 
 * @author itammb ( Italia Massimiliano Buscati )
 * @version JDK 1.15
 *
 */
class Main {
	/**
	 * @see List
	 * @see List#forEach(java.util.function.Consumer)
	 * @see ArrayList
	 * @see String#charAt(int)
	 *
	 */
	public static void loopByIndex() {

		String text = "HELLO WORD !?";

		// istruzione -for-
		// l'indice del ciclo permette di selezionare un elemento specifico e di
		// confrontarlo con altri

		for (int i = 0; i < text.length(); ++i)
			System.out.println(i + " -> " + text.charAt(i));

		// la variabile viene inizializza in fase di compilazione
		List<String> text_ = new ArrayList<String>() {
			private static final long serialVersionUID = -69;
			{
				add("HELLO");
				add("WORD");
				add("!?");
			}
		};

		// la variabile viene inizializza in run-time
		// rS.add( "HELLO" );
		// rS.add( "WORD" );
		// rS.add( "!?" );

		// istruzione -for-
		// senza indice
		// non è possibile selezionare un elemento specifico e confrontarlo con altri

		for (String word : text_)
			System.out.println(word);

		// istruzione -while-
		// senza indice
		// non è possibile selezionare un elemento specifico e confrontarlo con altri

		ListIterator<String> iter = text_.listIterator();
		while (iter.hasNext())
			System.out.println(iter.next());

		// istruzione -forEach-
		// senza indice
		// non è possibile selezionare un elemento specifico e confrontarlo con altri

		text_.forEach(word -> System.out.println(word));

		// istruzione -forEach- (labda expression)
		// senza indice
		// è possibile inserire un controllo

		text_.forEach(word -> {
			if (word.equals("HELLO")) {
				System.out.println("LABDA HELLO");
			}
		});

		// istruzione -forEach- (riferimento a un metodo)
		// senza indice
		// non è possibile selezionare un elemento specifico e confrontarlo con altri
		text_.forEach(System.out::println);
	}

	public static void loopByComparisonOnHead() {
		String text = "HELLO WORD !?";
		// sentinella
		boolean notExit = true;
		int index = 0;

		// istruzione -while- (ciclo condizionato in testa)
		// con indice surrogato
		// è possibile selezionareun un elemento specifico e confrontarlo con altri

		while (notExit = evaluateExit(text.charAt(index), notExit))
			System.out.println(index + " -> " + text.charAt(index++));

		System.out.println("posizione d'uscita: " + index);
	}

	public static void loopByComparisonOnTail() {
		String text = "HELLO WORD !?";
		// sentinella
		boolean notExit = true;
		int index = 0;

		// istruzione -do while- (ciclo condizionato in coda)
		// con indice surrogato
		// è possibile selezionareun un elemento specifico e confrontarlo con altri

		do {
			System.out.println(index + " -> " + text.charAt(index++));
		} while (notExit = evaluateExit(text.charAt(index), notExit));

		System.out.println("posizione d'uscita: " + index);
	}

	private static boolean evaluateExit(char simbolo, boolean notExit) {
		if (simbolo == '!')
			notExit = !notExit;

		return notExit;
	}

	public static void loopByJump() {
		String text = "HELLO WORD !?";
		// sentinella
		boolean notExit = true;

		// istruzione -for-
		// l'indice del ciclo permette di selezionare un elemento specifico e di
		// confrontarlo con altri
		// la sentinella permette un uscita ponderata, evitando istruzioni di salto come
		// break o continue

		for (int i = 0; i < text.length() && notExit; ++i) {
			char char_ = text.charAt(i);

			if (char_ == '!')
				notExit = false;
			else {
				System.out.println(i + " -> " + char_);
			}
		}
	}
   
    public static void main(String args[]) throws Exception {
		// Unit test - ciclo con selettore
		loopByIndex();

		System.out.println();

		// Unit test - ciclo condizionato in testa
		loopByComparisonOnHead();

		System.out.println();

		// Unit test - ciclo condizionato in coda
		loopByComparisonOnTail();

		System.out.println();

		// Unit test - ciclo con uscita ponderata
		loopByJump();
	}
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: