2010-11-19 152 views
2

好的我遇到了這個計算器的問題。我已經分配了該項目,我只能使用加法和減法。作業的第一部分是使用Scanner類創建它。所以我創建了一個循環和計算器工作...但乘法和除法關閉。它基本上只是不斷添加數字...就像3 * 6的答案將是24 ...但是然後我做2 * 1它會像26或東西。噢,我把課程保存爲不同的文件.. ..can有人能幫我解決這個計算器項目問題

這裏是

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

如何使用Button對象的數組而不是10個單獨的字段? – 2010-11-19 19:07:20

回答

0

我相信它,因爲你的每一個if語句將執行,因爲你永遠不恢復值返回到0,因此每個if語句繼續往下執行馬路。

1

您需要將結果重置爲0.0在performAction的底部。此外,您的分部實施設置爲i作爲文本。那絕對是不對的。

+0

如果我正確地閱讀了這個問題,他們不允許使用乘法或除法。否則,+1 – 2010-11-19 17:21:02

+0

@Matt Ball,謝謝,你是對的。我沒有注意到這個要求。將刪除建議使用其他操作員。 – 2010-11-19 17:24:41