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();
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: