2010-11-19 5 views
2

Ok Ich habe ein Problem mit diesem Rechner. Mir wurde das Projekt zugewiesen und ich kann nur Addition und Subtraktion verwenden. Der erste Teil der Aufgabe war, sie mit der Scanner-Klasse zu erstellen. Also habe ich eine Schleife erstellt und der Rechner funktioniert ... aber die Multiplikation und Division ist aus. Es fügt im Grunde nur Zahlen hinzu ... wie für 3 * 6 wird die Antwort 24 sein ... aber dann mache ich 2 * 1 es wird etwas wie 26 oder etwas sein. Oh ja, ich habe die Klassen als verschiedene Dateien gespeichert. ..can mir jemand helfen mit diesemCalculator Project Problem

hier ist es

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

Wie wäre es mit einem Array für die Button-Objekte statt 10 separate Felder? –

Antwort

0

ich seine glauben, weil jeder Ihrer if-Anweisungen ausführen, da Sie nie die Werte wieder auf 0 wiederherstellen daher jede if-Anweisung nach unten auszuführen weiter die Straße.

1

Sie müssen das Ergebnis auf 0.0 am Ende von performAction zurücksetzen. Darüber hinaus setzt Ihre Implementierung der Abteilung i als Text. Das ist definitiv nicht richtig.

+0

Wenn ich die Frage richtig gelesen habe, dürfen sie keine Multiplikation oder Division verwenden. Ansonsten, +1 –

+0

@Matt Ball, danke, und Sie haben Recht. Ich habe diese Anforderung nicht bemerkt. Entfernt den Vorschlag, andere Operatoren zu verwenden. –