平成28年 秋 Java問題
mo-さん
(No.1)
平成28年 秋 Java
【電卓をシミュレートするプログラム】
enum DigitKey implement Key の
public void operateOn メソッドについてなのですが、DIGIT0~DIGIT9に対応する10進数の数値でプッシュするとあります。
スタックに4が入っているところに5を追加するとき、4*10+5を計算し45にします。このときスタックの先頭にはなぜ45がはいらないのですか? 4と5が別々になるならordinal()だけして追加していけばいいんじゃないんですか?
解説をよんでもわからないです。
なにか勘違いしているのであれば教えていただけませんか。
【電卓をシミュレートするプログラム】
enum DigitKey implement Key の
public void operateOn メソッドについてなのですが、DIGIT0~DIGIT9に対応する10進数の数値でプッシュするとあります。
スタックに4が入っているところに5を追加するとき、4*10+5を計算し45にします。このときスタックの先頭にはなぜ45がはいらないのですか? 4と5が別々になるならordinal()だけして追加していけばいいんじゃないんですか?
解説をよんでもわからないです。
なにか勘違いしているのであれば教えていただけませんか。
2019.03.31 23:51
メタルさん
★FE ブロンズマイスター
(No.2)
その解説がどうなっているかわかりませんが、
プログラム2の部分に正解を当てはめたコードはこうです。
stack.push( stack.pop() * 10 + ordinal() );
高級言語では、これらのメソッドの内側の計算を先に実行してその計算結果( ここでは ”stack.pop() * 10 + ordinal()”の計算結果です)が外側のメソッド(”stack.push”)の引数として渡されますから、
まずスタックから4をpopし取り出して計算したのちスタックに45をpushして積み上げていますから45の数値になってスタックに戻っているはずです。
プログラム2の部分に正解を当てはめたコードはこうです。
stack.push( stack.pop() * 10 + ordinal() );
高級言語では、これらのメソッドの内側の計算を先に実行してその計算結果( ここでは ”stack.pop() * 10 + ordinal()”の計算結果です)が外側のメソッド(”stack.push”)の引数として渡されますから、
まずスタックから4をpopし取り出して計算したのちスタックに45をpushして積み上げていますから45の数値になってスタックに戻っているはずです。
2019.04.01 21:13
メタルさん
★FE ブロンズマイスター
(No.3)
それともこういうことかな?
電卓システムでは、あくまで一つのキー入力しか対応できません。
4の次に5を入力してもそれぞれ別の文字や番号としてしか意味を成しません。
45の数値ではなく、4と5の値または文字があるという意味になってしまいます。
けたがふたつの数値を掛け算するにはまずひとつ前の数を10倍して今入力された数を足して45の数値にしないと計算できないのです。
電卓システムでは、あくまで一つのキー入力しか対応できません。
4の次に5を入力してもそれぞれ別の文字や番号としてしか意味を成しません。
45の数値ではなく、4と5の値または文字があるという意味になってしまいます。
けたがふたつの数値を掛け算するにはまずひとつ前の数を10倍して今入力された数を足して45の数値にしないと計算できないのです。
2019.04.01 21:31
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告