Newsgroup: it.comp.java
Titolo: Aiuto => BufferedReader

In una classe devo leggere in input i comandi dell'utente e poi in
base a quelli riconosciuti dal programma eseguire determinate
operazioni.
Per fare questo ho usato un BufferedReader che legge da un
InputStreamReader che legge da System.in all'inteno di un ciclo while
infinito (quasi!).
Il problema è che dalla console, arrivo alla richiesta di
input del thread, ma non legge quello che inserisco e rimane in
attesa.(Non arriva mai all'istruzione :   System.out.println("Letto
l'input");
Come mai non legge l'input?
------------------------------------------------------------------------------
public void run () {
 
	System.out.println("WServer Attivato....");
 
	// Necessario per aprire il BufferedReader
	try{
 
 
	  BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
 
		boolean done = false;
		System.out.println("done=false");
		while (!done){
 
		// Leggo l'input
		String s = null;
		System.out.println("Leggo l'input");
		System.out.println(System.in.read());
		s = br.readLine();
		System.out.println("Letto l'input");
		if (s==null){ 
			done = true;
			System.out.println("done = true");
		}	
		int sep = s.indexOf(":");
		if (sep == -1){ 
			System.out.println("Break!");
			break;
		}	
 
		// per isolare le sottostringhe prima e dopo i :
		String command = s.substring(0,sep);
		String data = s.substring(sep+1);
 
		System.out.println("Inizio il controllo");
		if (command.equals("exit")){
				subExit(data);
				break;
		}	else if (command.equals("pub")){
				subPub(data);
		} else if (command.equals("sub")){
				subSub(data);
		} else if (command.equals("uns")){
				subUns(data);
		} else {
				System.out.println("Comando errato -
[exit,pub,sub,uns]");
		}
	}	// Fine while
 
	// chiudo il BufferedReader
	br.close();
 
	} // Fine try
	catch(IOException e) {
		System.out.println("ERRORE - Eccezione di IO");
	}		
 
	return;
}
public static void main(String argv[]) {
	// Creo un'istanza del server
	WServer theWServer = new WServer(argv);
 
	// Lo faccio partire con il metodo run()
	theWServer.run();
 
	// Esco
	System.exit(0);
}
-----------------------------------------------------------------------------------
Grazie e CIAO!!
=)
Ale
atr...@usa.net
alessand...@gruppopro.it
         Alle
 /-----------------\
|  
atr...@usa.net
  |
 \-----------------/

Alle ha scritto nel messaggio +ADw-35128df0.24025216+
AEA-news.iol.it
+AD4-...
+AD4-In una classe devo leggere in input i comandi dell'utente e poi in
+AD4-base a quelli riconosciuti dal programma eseguire determinate
+AD4-operazioni.
+AD4-Per fare questo ho usato un BufferedReader che legge da un
+AD4-InputStreamReader che legge da System.in all'inteno di un ciclo while
+AD4-infinito (quasi+ACE-).
+AD4-Il problema +AOg- che dalla console, arrivo alla richiesta di
+AD4-input del thread, ma non legge quello che inserisco e rimane in
+AD4-attesa.(Non arriva mai all'istruzione :   System.out.println(+ACI-Letto
+AD4-l'input+ACI-)+ADs-
+AD4-
+AD4-Come mai non legge l'input?
+AD4----------------------------------------------------------------------------
---+AD4- ...
+AD4- // Leggo l'input
+AD4- String s +AD0- null+ADs-
+AD4- System.out.println(+ACI-Leggo l'input+ACI-)+ADs-
+AD4- System.out.println(System.in.read())+ADs-
+AD4- s +AD0- br.readLine()+ADs-
+AD4- +AF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXg-
+AD4- System.out.println(+ACI-Letto l'input+ACI-)+ADs-
+AD4- ...
Ad occhio e croce sembra che tu faccia leggere due volte dalla shell. Prova
// Leggo l'input
String s +AD0- null+ADs-
System.out.println(+ACI-Leggo l'input+ACI-)+ADs-
s +AD0- br.readLine()+ADs-
System.out.println(s)+ADs-
System.out.println(+ACI-Letto l'input+ACI-)+ADs-
o se compare 2 volte l'output di quanto digitato elimina la linea
System.out.println(s)+ADs-
A   A  IGM  A          Ciao +ADs-o)
MM MM A   A M          Mei
I I I MAMIG I
G   G I     G   E-(Mei)l: mei+
AEA-pcos2.mi.infn.it
A   A  GA   A
Letture divertenti consigliate:
+ACI-Un diamante puo' essere per sempre ma le variabili no.+ACI-
 Il manuale ActiveX - T.Coombs - McGraw Hill
                             J.Coombs
                             D.Brewer