2010-11-19 9 views
2

いいえこの電卓に問題があります。私はプロジェクトに割り当てられました。私は加算と減算しか使用できません。課題の最初の部分は、Scannerクラスを使用して作成することでした。だから私はループを作成し、電卓は動作します...しかし、乗算と除算はオフです。それは基本的にちょうど数字を追加し続けています... 3 * 6のように答えは24です...しかし、私は2 * 1をします.26や何かのようになります。ええ、私はクラスを別のファイルとして保存しました。誰か..canこの電卓プロジェクトの問題

で私を助けここでは、文がダウンして実行し続けた場合、あなたが戻っしたがって、それぞれ0に値を復元することはありませんので、文が実行された場合、私はそのあなたの各ので信じる

public class Calculator_part2 extends calculator_gui{ 

public static void main(String[]args) 
{ 
calculator_gui n = new calculator_gui(); 
n.gui(); 
} 
} 

import javax.swing.*; 
import java.awt.FlowLayout; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 





public class calculator_gui implements ActionListener 
{ 
JFrame frame = new JFrame(" Calculator "); 
JPanel panel = new JPanel(new FlowLayout()); 

JTextArea text = new JTextArea(1,20); 
JButton but1 = new JButton("1"); 
JButton but2 = new JButton("2"); 
JButton but3 = new JButton("3"); 
JButton but4 = new JButton("4"); 
JButton but5 = new JButton("5"); 
JButton but6 = new JButton("6"); 
JButton but7 = new JButton("7"); 
JButton but8 = new JButton("8"); 
JButton but9 = new JButton("9"); 
JButton but0 = new JButton("0"); 

JButton add = new JButton(" + "); 
JButton sub = new JButton(" - "); 
JButton multi = new JButton (" * "); 
JButton div = new JButton("/"); 
JButton buteq = new JButton (" = "); 

JButton butclear = new JButton("C"); 

Double number1,number2,result = 0.0,temp = 0.0; 
int addc = 0, subc=0,multic=0,divc=0,i = 0; 

public void gui() 
{ 
    frame.setVisible(true); 
    frame.setSize(250,200); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    frame.add(panel); 

    panel.add(text); 
    panel.add(but1); 
    panel.add(but2); 
    panel.add(but3); 
    panel.add(but4); 
    panel.add(but5); 
    panel.add(but6); 
    panel.add(but7); 
    panel.add(but8); 
    panel.add(but9); 
    panel.add(but0); 

    panel.add(add); 
    panel.add(sub); 
    panel.add(multi); 
    panel.add(div); 
    panel.add(buteq); 
    panel.add(butclear); 

    but1.addActionListener(this); 
    but2.addActionListener(this); 
    but3.addActionListener(this); 
    but4.addActionListener(this); 
    but5.addActionListener(this); 
    but6.addActionListener(this); 
    but7.addActionListener(this); 
    but8.addActionListener(this); 
    but9.addActionListener(this); 
    but0.addActionListener(this); 
    add.addActionListener(this); 
    sub.addActionListener(this); 
    multi.addActionListener(this); 
    div.addActionListener(this); 
    buteq.addActionListener(this); 
    butclear.addActionListener(this); 


} 

public void actionPerformed(ActionEvent e) 
{ 
Object source = e.getSource(); 

if(source == butclear) 
{ 
    //number1 = 0.0; 
    //number2 = 0.0; 
    text.setText(""); 
} 

if(source == but1) 
{ 
    text.append("1"); 
} 

if(source == but2) 
{ 
    text.append("2"); 
} 

if(source == but3) 
{ 
    text.append("3"); 
} 

if(source == but4) 
{ 
    text.append("4"); 
} 

if(source == but5) 
{ 
    text.append("5"); 
} 

if(source == but6) 
{ 
    text.append("6"); 
} 

if(source == but7) 
{ 
    text.append("7"); 
} 

if(source == but8) 
{ 
    text.append("8"); 
} 

if(source == but9) 
{ 
    text.append("9"); 
} 

if(source == but0) 
{ 
    text.append("0"); 
} 
if(source == add) 
{ 
number1 = number_reader(); 
text.setText(""); 
addc=1; 
subc=0; 
multic=0; 
divc=0; 
} 
if(source == sub) 
{ 
number1 = number_reader(); 
text.setText(""); 
addc=0; 
subc=1; 
multic=0; 
divc=0; 
} 
if(source == multi) 
{ 
number1 = number_reader(); 
text.setText(""); 
addc=0; 
subc=0; 
multic=1; 
divc=0; 
} 
if(source == div) 
{ 
number1 = number_reader(); 
text.setText(""); 
addc=0; 
subc=0; 
multic=0; 
divc=1; 
} 

if(source == buteq) 
{ 
number2 = number_reader(); 
if(addc>0) 
{ 
    result = number1 + number2; 
    text.setText(Double.toString(result)); 
} 
if(subc>0) 
    { 
    result = number1 - number2; 
    text.setText(Double.toString(result)); 
} 
if(multic>0) 
    { 

    for( double i = 0;i <number2;i++) 
    { 
     result += number1; 
    } 


    text.setText(Double.toString(result)); 
} 
if(divc>0) 
    { 
    for (i = 0; temp < number1; i++) 
    { 
    temp += number2; 
    } 

    text.setText(Double.toString(i)); 
} 
} 
} 

public double number_reader() 
{ 
double num1; 
String s; 
s = text.getText(); 
num1 = Double.valueOf(s); 

return num1; 

} 
} 
+0

10個の別々のフィールドの代わりにボタンオブジェクトの配列を使用するのはどうですか? –

答えて

1

performActionの下部に結果を0.0にリセットする必要があります。さらに、除算の実装はiをテキストとして設定します。それは間違いなく正しいです。

+0

質問を正しく読んだら、乗算や除算を使用することはできません。それ以外の場合は+1 –

+0

@Matt Ball、ありがとうございます。私はその要求に気付かなかった。他の演算子を使用するための提案を削除します。 –