webForumDet fria alternativet

System.in.read hoppas över

Java

3 svar · 184 visningar · startad av pettsson

Medlem sedan jan. 20021 122 inlägg
Frågan#1

Varför gör den så? Vet att jag hade samma problem i C++ kursen, men kommer inte ihåg hur man åtgärdar det hela... Antagligen är det ändå inte samma sätt, men hur gör man?

Medlem sedan jan. 20021 122 inlägg
#2

Löste det själv genom att byta från System.in.read() till InputReader.

Medlem sedan maj 20012 237 inlägg
#3

Hej!

Vad exakt menar du?

Att du aldrig får möjligheten att skriva nåt?

Klistra in lite kod så kan vi lättare se ditt problem.

Nedanstående kod tar emot ett tecken från tangentbordet.


 try
 {
 	System.in.read();	// läser in ett tecken
 }
 catch(Exception e) 
 {
 	System.out.println(e);
 }

Vill du däremot ha det som användaren skrev efter att han/hon tryckte på enter så får du göra en egen metod som lyssnar på InputStreamen efter fler tecken och lagra dem nånstans (t ex StringBuffer)


		StringBuffer str = new StringBuffer();
		
		int ch;
		
		while( (ch = System.in.read() ) != -1) // rulla på så länge vi får in data från tangentbordet
		{
			if(ch == '\r')
				continue;
			else if(ch != '\n')			// lagra tecknet i en StringBuffer
				str.append((char)ch);	
			else						// användaren tryckte på enter
				break;
				
		}			
		
		System.out.println(str); // skriv ut det du skrev med tangentbordet
Medlem sedan jan. 20021 122 inlägg
#4

Jag fick aldrig möjlighet att skriva in något, nej. Men nu använder jag en BufferedReader, och allting funkar fint :)

266 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)