Buonasera a tutti , ho un problema con java.
Una classe esterna deve gestire I/O , quindi ogni qualvolta ho bisogno di passere per quest'ultima. Nel caso di lettura devo tornare una stringa nella quale è contenuta la Scanner(System.in) , ma dopo la prima chiamata in seguito mi da errore di linea vuota perché non da il tempo all'utente di scrivere , sono sicuro sia un mio errore ma non so come porvi rimedio se qualcuno ha qualche idea mi darebbe una grandissima mano. Di seguito riporterò il codice in questione.
this.utente = new InterfacciaUtenteConsole(); // InterfacciaUtenteConsole è una classe che si appoggia ad un interfaccia
public void gioca() {
String istruzione ;
this.utente.mostraMessaggio(MESSAGGIO_BENVENUTO);
do
istruzione = this.utente.prendiIstruzione();
while (!processaIstruzione(istruzione));
}
public class InterfacciaUtenteConsole implements InterfacciaUtente{ // la classe in questione
@Override
public void mostraMessaggio(String messaggio) {
System.out.println(messaggio);
}
@Override
public String prendiIstruzione() {
String istruzione = null;
Scanner scannerDiLinee = new Scanner(System.in);
istruzione = scannerDiLinee.nextLine();
scannerDiLinee.close();
return istruzione ;}}
prima di dover fare questa modifica e passare per una classe esterna il codice era il seguente(e funzionava senza problemi , facendomi inserire sempre prima un input e poi lo leggeva):
public void gioca() { // CLASSE OBSOLETA
String istruzione;
Scanner scannerDiLinee;
this.utente.mostraMessaggio(MESSAGGIO_BENVENUTO);
scannerDiLinee = new Scanner(System.in);
do
istruzione = scannerDiLinee.nextLine();
while (!processaIstruzione(istruzione));
scannerDiLinee.close();
}
Grazie mille a tutti! spero di essere stato il più chiaro possibile