HOME»基本情報技術者試験掲示板»平成28年 秋 Java問題
投稿する
»[1696] 問13における変数宣言について 投稿数:4
»[1695] H26秋午後 問5ソフトウェア設計 設問2 投稿数:13
平成28年 秋 Java問題 [1698]
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
メタルさん(No.2)
★FE ブロンズマイスター
その解説がどうなっているかわかりませんが、
プログラム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
メタルさん(No.3)
★FE ブロンズマイスター
それともこういうことかな?
電卓システムでは、あくまで一つのキー入力しか対応できません。
4の次に5を入力してもそれぞれ別の文字や番号としてしか意味を成しません。
45の数値ではなく、4と5の値または文字があるという意味になってしまいます。
けたがふたつの数値を掛け算するにはまずひとつ前の数を10倍して今入力された数を足して45の数値にしないと計算できないのです。
電卓システムでは、あくまで一つのキー入力しか対応できません。
4の次に5を入力してもそれぞれ別の文字や番号としてしか意味を成しません。
45の数値ではなく、4と5の値または文字があるという意味になってしまいます。
けたがふたつの数値を掛け算するにはまずひとつ前の数を10倍して今入力された数を足して45の数値にしないと計算できないのです。
2019.04.01 21:31
その他のスレッド
»[1697] 問題の解説がわかりません😭 投稿数:2»[1696] 問13における変数宣言について 投稿数:4
»[1695] H26秋午後 問5ソフトウェア設計 設問2 投稿数:13