![]() |
![]() |
![]() |
![]() |
![]() |
|
You cannot use the nextWord message to
read floating-point numbers, because nextWord stops reading when it
encounters a decimal point. Fortunately, you can define nextNumber,
which reads numbers whether they are Integer instances or
Float instances.
The following simple version of the nextNumber method uses
peek to determine whether the first part of the number is
followed by a decimal point; if so, it reads the rest, and uses
asFloat to convert the concatenated parts:
Stream method definition instance nextNumber | number fraction | number := self nextWord. self peek = $. ifTrue: [fraction := self nextWord. ^ (number , '.' , fraction) asFloat] ifFalse: [^ number asInteger]