Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    33

    Ridondanza degli enunciati (while)

    Ragazzi non capisco il perchè di questa cosa:

    codice:
    import java.util.Scanner;
    public class voto {
    public static void main (String[]args){
    	Scanner in = new Scanner(System.in);
    	boolean done = true;
    	while (done){
    	System.out.println("Inserire una parola");
    	String titolo = in.nextLine().trim();
    	while (titolo.equals("")){
    		System.out.println("Inserisci una parola valida");
    		titolo = in.nextLine().trim();
    	}
    		System.out.println("Vuoi inserire un'altra parola?");
    		System.out.println("Premere 1 per si 2 per no");
    		int scelta = in.nextInt();
    		if (scelta==1) System.out.println("");
    		else done = false;
    	}
    }
    }
    Dopo la prima esecuzione,scelgo digitando 1 di rieseguire la seconda,ma appare (non so il perchè) il messaggio contenuto nel while "Inserisci una parola valida".Perchè?
    Si può correggere il problema e gestire questo genere di cicli in un modo + efficiente?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    33
    Forse perchè la variabile String titolo assume il valore di "",ma non di certo l'ho messo io.
    SE è questo il problema come si può risolvere?CI sto sbattendo da oggi!

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Ridondanza degli enunciati (while)

    Originariamente inviato da z0rk
    Dopo la prima esecuzione,scelgo digitando 1 di rieseguire la seconda,ma appare (non so il perchè) il messaggio contenuto nel while "Inserisci una parola valida".Perchè?
    Quando premi:

    1<INVIO>

    la parte "1" viene presa come token (valido) per un intero mentre il resto <INVIO> viene preso come una stringa vuota, letta poi dal prossimo nextLine().

    O decidi di usare sempre nextLine() e di fare tu eventuali conversioni necessarie, oppure dopo nextInt() fai comunque un nextLine() giusto per buttare via il resto fino a fine riga.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.