webForumDet fria alternativet

System.in.read hoppas över

3 svar · 184 visningar · startad av pettsson

pettssonMedlem sedan jan. 2002777 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. 2002777 inlägg
#2

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

jmeMedlem sedan maj 20011 967 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. 2002777 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 :)

124 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
121 ms — hämta tråd, inlägg och bilagor (db)