2010-11-28 14 views
0

以下のコードは、Calculatorの実際のコードのチャンクです。ユーザーが電卓の数字を押してから、「+」を押すとテキストフィールドの数字が保存され、次の数字が押されて"="を押したときに格納されます。次に、 "="では加算関数が実行されます。加算と減算の両方を同時に実行したい場合は、加算後にユーザーが減算をしたいのですがどうすればいいですか? ???Javaの異なる電卓の基本機能の問題?

+1

はこの宿題ですか? – st0le

+1

基本的には、私は試験の前に私のGUIコースを練習できるように、javaで電卓を作ることを考えていました。 – Salar

答えて

1

について:入力として負の数を受け入れてから追加しますか?または私はポイントを逃している?

もしそうでなければ、RPNを使うと "="は必要なくなります。 2つの数字を入力すると、 "+"または " - "は2つのオペランドをスタックから取り出し、演算子を適用し、結果をスタックに戻して表示します。

第三の方法:「 - 」代わりのためのあなたのコードの使用:


if(a.getActionCommand().equals("-")) 
{ 
    b=tf.getText(); 
    x=-(Integer.parseInt(b)); 
} 

ない私はその最後の提案に考慮にすべてを撮影した場合は必ず、それがスタートです。

+0

いいえこのようにはありません:/ – Salar

1

電卓は、通常、+または-のようなアクションを処理するたびに=の操作を実行します。試してみて、コンピュータでcalcアプリケーションを開き、3 + 5 - 1を試してみてください。 -を押すと、ディスプレイに8と表示されます。あなたはあなたと同じことをすることができ、好きなだけ多くの+-操作を連続して扱うことができます。あなたが投稿したコードにはいくつかのリファクタリングがありますが、あなたがそこで行うことができるのは、=操作のために使用するプロセスをメソッド化することです。その後、それぞれ+または-ブロックの先頭にあるperformEqualsと呼ぶことができます。

1

jcomeau_ictxのようなスタックベースのアルゴリズムは、問題に対する非常に実行可能な解決策です。

演算子(+、 - 、*、/)を保持するものと、オペランド(番号0-9の集合)を保持するものの2つのスタックを作成します。

ユーザープレスサポートしています:3 + 4から5

Steps: 

1.) Push '3' into the operand stack 
2.) Push '+' into the operator stack 
3.) Push '4' into the operand stack. 

Since there are at least 2 operands, calculate 3 + 4 (which is 7). 

4.) Pop 3 and 4. Add these two and pop them to the operand stack 
5.) Pop + from the operator stack and push -. 
6.) Push 5 onto the stack. Subtract these two and place result in operand stack. 

一般的なアルゴリズムを:

Push operand (or operator) into the stack 
if (operands > 2 && operator > 0) 
    pop both operands and one operator; 
    calculate result; 
    place result in operand stack; 
    reset operator stack; 
0

私はあなたが4つの演算(+、 - 、×、÷)があると仮定し、それをが操作順序を実装していない基本的なデスクトップ電卓を実装しています。この場合、jcomeau_ictx'sx=-(Integer.parseInt(b))は、乗算と除算ではなく、減算しか処理できず、これらのスタックベースの解決策は過剰です。

あなたは3つの変数:firstNumber,operationおよびsecondNumberです。 operationは空になります(または「空」を示す値を使用します)。ユーザーが=ヒットしたら、ディスプレイから番号を取り出してsecondNumberに入れます。次に、3つの変数すべてを見て、operation変数に示された値を実行します。

+、 - 、×、または÷を打つと、まず=操作を実行します(secondNumberにユーザーの入力を入れ、operationで示される操作を実行します)。結果をfirstNumberに入れてください(望むなら、それを画面に表示してください)。 operation変数にユーザーがヒットした操作(+、 - 、×、または÷)を保存して、次回にの操作を実行できるようにします。 +、 - 、×、÷または=をヒットします。