import java.util.Scanner; public class Esercizio5 { public static void main(String[] args) { var kbd = new Scanner(System.in); System.out.println("Pensa un numero da 1 a 100, io provo a indovinarlo."); System.out.println("Quando rispondi, scrivi ok se ho indovinato, minore se il numero"); System.out.println("che hai pensato è più piccolo, maggiore se è più grande"); // Le variabili min e max contengono il più piccolo e il più grande numero che può avere // in mente il giocatore umano. All'inizio valgono 1 e 100. var min = 1; var max = 100; // Continuo il ciclo che segue finché min è minore di max. while (min <= max) { // Scelgo il numero intermedio tra min e max, e lo propongo all'umano var n = (min + max) / 2; System.out.print("Per caso hai pensato al " + n + " ? "); var risposta = kbd.nextLine(); // Se la risposta è "ok", vuol dire che ho indovinato ed esco dal ciclo. if (risposta.equals("ok")) break; // Se la risposta è "maggiore", vuol dire che il numero pensato dall'umano // è più grande di n. Aggiorno la variabile min di consguenza. else if (risposta.equals("maggiore")) min = n + 1; // Se la rispsota è "minore" vuol dire che il numero che sta pensando è miniore di n. // Aggiorno la variabile max di conseguenza. else if (risposta.equals("minore")) max = n - 1; else System.out.println("Non ho capito"); } // Se siamo usciti ci sono due possibilità: // - siamo usciti con break: allora min <= max è abbiamo indovinato il numero; // - siamo usciti perché la condizione del while è falsa, ovvero min > max. Questo è // impossibile, a meno che l'umano abbia barato. if (min <= max) System.out.println("Sono un genio!"); else System.out.println("Non vale, stai barando!"); kbd.close(); } }