webForumDet fria alternativet

System.in.read hoppas över

3 svar · 184 visningar · startad av pettsson

pettssonMedlem sedan jan. 20021 122 inlägg
#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?

pettssonMedlem sedan jan. 20021 122 inlägg
#2

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

jmeMedlem 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
pettssonMedlem 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 :)

129 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)