Java Reference
In-Depth Information
double
double
tmp
;
while
while
(
scan
.
hasNext
()) {
iif
(
scan
.
hasNextDouble
()) {
push
(
scan
.
nextDouble
());
}
else
else
{
String token
=
scan
.
next
();
iif
(
token
.
equals
(
"+"
)) {
// Found + operator, perform it immediately.
push
(
pop
() +
pop
());
}
else
else iif
(
token
.
equals
(
"-"
)) {
// Found - operator, perform it (order matters).
tmp
=
pop
();
push
(
pop
() -
tmp
);
}
else
else iif
(
token
.
equals
(
"*"
)) {
// Multiply is commutative
push
(
pop
() *
pop
());
}
else
else iif
(
token
.
equals
(
"/"
)) {
// Handle division carefully: order matters!
tmp
=
pop
();
push
(
pop
() /
tmp
);
}
else
else iif
(
token
.
equals
(
"="
)) {
out
.
println
(
peek
());
}
else
else
{
out
.
println
(
"What's this? "
+
token
);
}
}
}
}
void
void
push
(
double
double
val
) {
s
.
push
(
new
new
Double
(
val
));
}
double
double
pop
() {
return
return
((
Double
)
s
.
pop
()).
doubleValue
();
}
double
double
peek
() {
return
return
((
Double
)
s
.
peek
()).
doubleValue
();
}
void
void
clearStack
() {
s
.
removeAllElements
();
}
}