• ベストアンサー

簡易電卓の問題がわかりません!

簡易電卓のプログラミングについてご教授お願いしたく投稿いたしました。ほぼ合っていると思うのですが、実行できません。一番下の・・・の部分のプログラミングを教えてください!よろしくお願いいたします! import java.io.*; class TestCalc{ public static void main(String[] arg) { BufferedReader input= new BufferedReader(new InputStreamReader(System.in)); Calc calc=new Calc(); try{ String line; System.out.print("==> "); while((line=input.readLine())!=null){ int x=calc.process(line); System.out.println(x); System.out.print("==> "); } }catch(IOException e){ } } } //この後、Calcクラスの定義 class Calc{ private IntStack st; Calc(){ st=new IntStack(); } int process(String s) { if (s.equals("+")) { int n=st.pop()+st.pop(); st.push(n); return n; } else if (s.equals("-")) { } else if (s.equals("*")) { } else if (s.equals("/")) { } else { int n=Integer.parseInt(s); st.push(n); return n; } } } class IntStack{ ... }

質問者が選んだベストアンサー

  • ベストアンサー
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.5

私の場合の答えは 1.最初にpush()される。i[0]  j←1 2.二つ目のデータをpush()される。i[1] j←2 3.例えば"+"が入力されたとき最初にpop()で得たデータと二回目にpop()されたデータ同士が加算され(i[0]+i[1]) push(n)されると同時に表示される。 class IntStack{ private int[] i=new int[3]; private int j=0; void push(int n){ i[j]=n; j=j+1; } int pop(){ j=j-1; return i[j];  }      }

vince_macmahon
質問者

お礼

ありがとうございました!とても参考になりました!

その他の回答 (4)

noname#15808
noname#15808
回答No.4

Last In First Outについては参考URLに簡単な説明があります. fortranxpさんのIntStackクラスを少し変更すれば実現できますね. class IntStack { private int[] i = new int[2]; private int k = 0; void push(int n) { (追加処理) } int pop() { (取り出し処理) } }

参考URL:
http://e-words.jp/w/LIFO.html
vince_macmahon
質問者

お礼

お返事どうもありがとうございます!fortranxpさんのInStackクラスをどう変更すればよいのかわかりません。。。追加処理と取り出し処理のところとか。。。すみませんが、よろしくお願いします!

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.3

なんかよく判りませんが 1.push(n) ではnを保存する。 2.pop()  nをreturnする。 class IntStack { private int i[]=new int[3]; private int k;     void push(int n){       k=k+1;       i[k]=n; }     int pop(){       k=k-1;       return i[k];         } } みたいな。でもうまくできない。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

わざわざクラスを作らなくても private Stack<Integer> st; でいいんじゃないの?

vince_macmahon
質問者

お礼

お返事ありがとうございます。private Stack<Integer> st;は授業で習ってないので、使いこなせないです。。。すいません、クラスを作る方法のほうでご教授お願いします。

noname#15808
noname#15808
回答No.1

Last In First Outを実現する.

vince_macmahon
質問者

お礼

お返事どうもありがとうございます。Last In First Outを実現するとはどのような意味でしょうか?

関連するQ&A

専門家に質問してみよう