Home > Back-end >  Help calculator variable is negative number key input positive points after the switch button does n
Help calculator variable is negative number key input positive points after the switch button does n

Time:11-30

Package calculator;
import java.awt.BorderLayout;
import java.awt.GridLayout;
Import the Java. The awt. The Font;
Import the Java. The awt. Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JPanel;
The import javax.mail. Swing. Border. EmptyBorder;
Public class calculator1 extends JFrame implements ActionListener
{
Private final String [] K={
"Backspace", "CE", "C", "=", "7", "eight" and "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", "+/-", ""," + "
};
Private JButton [k]=new JButton [Kuala Lumpur ength];
T=new private JTextField JTextField (" 0 ");
Private double resultNum=0.0;
Private String operator="=";
Private Boolean firstDigit=true;
Private Boolean operateValidFlag=true; It is legal to have//
Public calculator1 ()
{
super();
The init ();
Enclosing setBackground (Color black);
Enclosing setTitle (" 82 drum ");
Enclosing setSize (600, 600);
Enclosing setLocation (800, 50);
}//create the main interface and modify the format
Private void init ()
{
T.s etHorizontalAlignment (JTextField. RIGHT);
T.s etBackground (Color. White);
T.s etFont (new Font (" Microsoft Uighur ", the Font. ITALIC, 30));
T.s etColumns (10);
T.s etEditable (false);//create a text box and modify the above format
JPanel calckeysPanel=new JPanel ();
CalckeysPanel. SetLayout (new GridLayout (5, 4, 10, 10));
for(int i=0; i {
[I] k=new JButton (k [I]);
[I] calckeysPanel. Add (k);
K [I] setForeground (Color. White);
K [I] setBackground (Color black);
The Font FNT=new Font (" Serief ", the Font, BOLD, 18);
K [I] the setFont (FNT);
The Font fn=new Font (" Serief ", the Font, BOLD, 30);
CalckeysPanel. SetBorder (new EmptyBorder (10, 10, 20, 20));
}//insert button and modify the format
JPanel panel1=new JPanel ();
Panel1. SetLayout (new BorderLayout (10, 10));
Panel1. Add (" Center ", calckeysPanel);
JPanel toptext=new JPanel ();
Toptext. SetLayout (new BorderLayout ());
Toptext. Add (" Center ", t);//create
GetContentPane (). SetLayout (new BorderLayout (20, 20));
GetContentPane (). The add (" North ", toptext);
GetContentPane (). The add (" Center ", panel1);//insert
for(int i=0; i {
K [I] addActionListener (this);
}
}
Public void actionPerformed (an ActionEvent e)
{
String label=um participant etActionCommand ();
If (label. Equals [0]) (K)
{
HandleBackspace ();
}
Else if (label equals [1] (K))
{
T.s etText (" 0 ");
}
Else if (label equals [2] (K))
{
HandleC ();
}
Else if (" 0123456789 ". IndexOf (label) & gt;=0)
{
HandleNumber (label);
}
The else
{
HandleOperator (label);
}
}//create
Private void handleBackspace ()
{
A String of text=t.g etText ();
Int I=text. The length ();
If (I & gt; 0)
{
Text=text. The substring (0, I - 1);
If (text. The length ()==0)
{
T.s etText (" 0 ");
FirstDigit=true;
The operator=="";
}
The else
{
T.s etText (text);
}
}
}//processing
Private void handleNumber (String key)
{
If (firstDigit)
{
//enter
T.s etText (key);
}
Else if ((key) equals (". ")) & amp; & (t.g etText (.) indexOf (". ") & lt; 0))
{
T.s etText (t.g etText () + "");
}
Else if (! Key. Equals (". "))
{
T.s etText (t.g etText () + key);
}
FirstDigit=false;
}
Private void handleC ()
{
//initialize
T.s etText (" 0 ");
FirstDigit=true;
The operator=="";
}
Private void handleOperator (String key)
{
If (operator. Equals ("/"))
{
If (getNumberFromText ()==0.0)
{
//operating illegal
OperateValidFlag=false;
T.s etText (" divisor cannot be zero ");
}
The else
{
ResultNum/=getNumberFromText ();
}
}
Else if (operator) equals (" + "))
{
ResultNum +=getNumberFromText ();
}
Else if (operator) equals (" - "))
{
ResultNum -=getNumberFromText ();
}
Else if (operator) equals (" * "))
{
ResultNum *=getNumberFromText ();
}
Else if (operator) equals (" +/-))
{
ResultNum=resultNum * (1);


}
Else if (operator) equals ("="))
{
ResultNum=getNumberFromText ();
}
If (operateValidFlag)
{
Long t1;
Double t2;
T1=(long) resultNum;
T2=resultNum - t1;
If (t2==0)
{
T.s etText (String. The valueOf (t1));
}
The else
{
T.s etText (String. The valueOf (resultNum));
}
}
Operator=key;
FirstDigit=true;
OperateValidFlag=true;
}
Private double getNumberFromText ()
{
Double the result=0;
Try
{
Result=Double. The valueOf (t.g etText ()). DoubleValue ();
}
The catch (a NumberFormatException e)
{}
return result;
}
Public static void main (String args [])
{
Calculator1 calculator=new calculator1 ();
nullnullnullnull
  • Related