🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
4 messages
4 total messages Started by Obsession Sun, 03 Nov 2002 22:35
"simpel' vraagske ivm java
#6926
Author: Obsession
Date: Sun, 03 Nov 2002 22:35
23 lines
1718 bytes
Ik wil een cijfer van de console lezen via System.in.read()
als ik het volgende doe:
...
int x;
x=System.in.read();
// volgens de help returns deze functie een int, als ik 5 intik krijg ik 53
terug, nu zou ik die 5 willen hebben, niet die 53, das de ascii waarde als
ik mij goed herinner. Ik heb deze nodig in een while lus

while(x>0)
{ x--; nf=nf*x; }

// nu loopt deze lus 53 keer, ik moet die maar 5x hebben


Ik heb al vanalles geprobeert, de variabele x als char nemen, een long
variabele en dan l=(long)(char)x;
maar wat ik ook probeer ik slaag er maar niet in om die '5' om te zetten in
5.

als iemand mij hierbij zou kunnen helpen.

bedankt
Re: "simpel' vraagske ivm java
#6927
Author: bomberboy
Date: Sun, 03 Nov 2002 23:04
32 lines
2213 bytes
Obsession wrote:

> Ik wil een cijfer van de console lezen via System.in.read() als ik het
> volgende doe:
> ...
> int x;
> x=System.in.read();
> // volgens de help returns deze functie een int, als ik 5 intik krijg ik
> 53 terug, nu zou ik die 5 willen hebben, niet die 53, das de ascii
> waarde als ik mij goed herinner. Ik heb deze nodig in een while lus

Je leest hier rechtstreeks van een inputStream.  Je moet daar eerst nog
een Reader rondwrappen, een InputStreamReader in dit geval.  En daarrond
nog een BuffferedReader is ook geen slecht idee.

Dan krijg je iets als

BufferedReader kb = new BufferedReader(new InputStreamReader(System.in));

En dan kan je van kb (keyboard) inlezen, bv met readLine()

int x = Integer.parseInt(kb.readLine);

De static methode parseInt is nog nodig om van de ingelezen String
(readLine returnt een String) een integer te maken.

De reden dat jij 53 kreeg was omdat je rechtstreeks van de InputStream
las, en je dus bytes terugkreeg, niet ge�nterpreteert als chars.  (zo
ongeveer)

-- 
Bruno
Re: "simpel' vraagske ivm java
#6930
Author: Tolle
Date: Mon, 04 Nov 2002 21:43
12 lines
1710 bytes
> Ik wil een cijfer van de console lezen via System.in.read() ...
> x=System.in.read();
> // volgens de help returns deze functie een int, als ik 5 intik krijg ik
> 53 terug, nu zou ik die 5 willen hebben, niet die 53, das de ascii
> waarde als ik mij goed herinner. Ik heb deze nodig in een while lus
>
Even een bijvraag, als je slechts 1 getal (tussen 0 en 9) in wil lezen en
van de
bekomen waarde 48 aftrek (ascii enzo...) krijg je dan gezeik met
de compatibiliteit onder andere VM's ? (zoals die voor de mac?)

Tolle.
Re: "simpel' vraagske ivm java
#6931
Author: Slayerke
Date: Mon, 04 Nov 2002 22:49
23 lines
2197 bytes
Tolle wrote:

>> Ik wil een cijfer van de console lezen via System.in.read() ...
>> x=System.in.read();
>> // volgens de help returns deze functie een int, als ik 5 intik krijg ik
>> 53 terug, nu zou ik die 5 willen hebben, niet die 53, das de ascii
>> waarde als ik mij goed herinner. Ik heb deze nodig in een while lus
>>
> Even een bijvraag, als je slechts 1 getal (tussen 0 en 9) in wil lezen en
> van de
> bekomen waarde 48 aftrek (ascii enzo...) krijg je dan gezeik met
> de compatibiliteit onder andere VM's ? (zoals die voor de mac?)
> 
Nee want java werkt overal intern met unicode, je zou dus eigenlijk perfect 
van dat ingelezen getal (int)'0' kunnen aftrekken en dan zou je inderdaad 
een getal tussen 0 en 9 krijgen. Die code is dan wel totaal niet 
uitbreidbaar, stel dat je opeens toch 10 moet kunnen inlezen, en je moet 
dan zelf nog controleren of de gebruiker wel effectief iets tussen 0 en 9 
heeft ingevoerd, en bvb niet een letter. Integer.parseInt doet dat allemaal 
voor u.
-- 
Groeten,
Slayerke
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads