こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

簡易電卓のプログラミングについてご教授お願いしたく投稿いたしました。ほぼ合っていると思うのですが、実行できません。一番下の・・・の部分のプログラミングを教えてください!よろしくお願いいたします!

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{
...
}

投稿日時 - 2005-12-23 17:29:09

QNo.1855629

すぐに回答ほしいです

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

私の場合の答えは
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];
 }
     }

投稿日時 - 2005-12-27 20:33:58

お礼

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

投稿日時 - 2005-12-28 06:07:54

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.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

投稿日時 - 2005-12-24 22:17:54

お礼

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

投稿日時 - 2005-12-25 09:15:15

ANo.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];
        }
}
みたいな。でもうまくできない。

投稿日時 - 2005-12-23 20:46:31

ANo.2

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

投稿日時 - 2005-12-23 19:20:26

お礼

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

投稿日時 - 2005-12-24 21:29:58

ANo.1

Last In First Outを実現する.

投稿日時 - 2005-12-23 18:11:43

お礼

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

投稿日時 - 2005-12-24 21:27:40

あなたにオススメの質問