2013-03-28 37 views
0

我正在制作一个使用MVC风格的java计算器。我只是难以区分他们进入的第一个号码和第二个号码。我输入了一个布尔值,当输入正值或负值时变为true,这将数字字符串更改回“”,一个空白字符串。但是当这个布尔值为true时,我会去得到它,这个字符串已经是空白的,所以太晚了。有关如何获得第一个数字和第二个数字的任何建议?这个计算器只是使用正和负。等于和清除按钮。感谢如何区分java计算器中的第一个int和第二个int?

计算值类

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 


class Calc extends JFrame implements ActionListener { 


    private JTextField numDisplay = new JTextField(10); 
    private JButton plusButton = new JButton("+"); 
    private JButton minusButton = new JButton("-"); 
    private JButton clearButton = new JButton("Clear"); 
    private JButton equalsButton = new JButton("="); 
    private JButton zeroButton = new JButton("0"); 
    private JButton oneButton = new JButton("1"); 
    private JButton twoButton = new JButton("2"); 
    private JButton threeButton = new JButton("3"); 
    private JButton fourButton = new JButton("4"); 
    private JButton fiveButton = new JButton("5"); 
    private JButton sixButton = new JButton("6"); 
    private JButton sevenButton = new JButton("7"); 
    private JButton eightButton = new JButton("8"); 
    private JButton nineButton = new JButton("9"); 
    private String number = ""; 
    private boolean trueFalse; //plus or minus 
    private boolean onOff = false; //false = 1st int, true = 2nd int 
    private int total; 
    private boolean isEquals = false; // false = haven't clicked equals button yet,  true they have 
    //private String numberText; 

    Calc(){ 
     JPanel calcPanel = new JPanel(); 

     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setSize(400, 600); 
     calcPanel.add(numDisplay); 
     calcPanel.add(plusButton); 
     calcPanel.add(minusButton); 
     calcPanel.add(clearButton); 
     calcPanel.add(equalsButton); 
     calcPanel.add(zeroButton); 
     calcPanel.add(oneButton); 
     calcPanel.add(twoButton); 
     calcPanel.add(threeButton); 
     calcPanel.add(fourButton); 
     calcPanel.add(fiveButton); 
     calcPanel.add(sixButton); 
     calcPanel.add(sevenButton); 
     calcPanel.add(eightButton); 
     calcPanel.add(nineButton); 

     this.add(calcPanel); 

     plusButton.addActionListener(this); 
     minusButton.addActionListener(this); 
     clearButton.addActionListener(this); 
     equalsButton.addActionListener(this); 
     zeroButton.addActionListener(this); 
     oneButton.addActionListener(this); 
     twoButton.addActionListener(this); 
     threeButton.addActionListener(this); 
     fourButton.addActionListener(this); 
     fiveButton.addActionListener(this); 
     sixButton.addActionListener(this); 
     sevenButton.addActionListener(this); 
     eightButton.addActionListener(this); 
     nineButton.addActionListener(this); 

    } 
    public void actionPerformed(ActionEvent event){ 
     if (event.getSource() instanceof JButton){ 
      JButton clickedButton = (JButton) event.getSource(); 
      String buttonText = clickedButton.getText(); 
      if (clickedButton == zeroButton || clickedButton == oneButton || clickedButton == twoButton || clickedButton == threeButton || clickedButton == fourButton || clickedButton == fiveButton || clickedButton == sixButton || clickedButton == sevenButton || clickedButton == eightButton || clickedButton == nineButton) 
      { 
       number = number + buttonText; 
      } 
      if (clickedButton == clearButton){ 
       number = ""; 
       onOff = false; 
      } 
      if (clickedButton == plusButton){ 
       trueFalse = true; 
       onOff = true; 
      } 
      if (clickedButton == minusButton){ 
       trueFalse = false; 
       onOff = true; 
       number = ""; 
      } 
      if (clickedButton == equalsButton){ 
       isEquals = true; 
      } 
     } 
    } 
    public int getNumber(){ 
     return Integer.parseInt(number); 
    } 
    public boolean trueFalse(){ 
     return trueFalse; 
    } 
    public boolean onOff(){ 
     return onOff; 
    } 
    public int total(){ 
     return total; 
    } 
    public boolean isEquals(){ 
     return isEquals; 
    } 
    public String getNumberString(){ 
     return number; 
    } 
} 

计算类来处理用户输入

public class Calculations 
{ 
    private Calc theView; 
    private CalculationModel theModel; 
    private boolean onOff = theView.onOff(); 
    private boolean trueFalse = theView.trueFalse(); 
    private int number1; 

    public Calculations(Calc theView, CalculationModel theModel) 
    { 
     this.theView = theView; 
     this.theModel = theModel; 
    } 

    public void doesometing() { 
     if(trueFalse)  
     { 
      number1 = theView.getNumber(); 
     } 
    } 
} 

回答

1

的一种方式是由用户输入的值推送到堆栈。那样他最近的价值是最后的。

要进行计算,您需要从堆栈中弹出两个值,运行计算并将结果推送到堆栈。输入的下一个值将在最后一个结果之后进入堆栈。

编辑:通过将数字附加到字符串的末尾来收集数字以完成编号,并在按下非数字时将字符串转换为数字。请注意,连续两个点不是有效的数字,因此您需要处理该数字。

+0

没错,但他们正在点击按钮,而不是自己输入字符。对不起,我应该做得更清楚 – iNeedHelp

+0

演示文稿不重要,你会有价值和操作。如果按钮按下数字结果,则需要收集这些数字,直到按下某个功能并按下按钮时才生成一个数字。 –

+0

那么我该怎么做?我不知道如何获得数字之前它被清除为空 – iNeedHelp

相关问题