下面有个有关简易计算器的JAVA程序,其中有个问题想向各位高手求救! 下面程序中的start在这个程序中起的什么作用? 我是新手,望大家多多指教!
程序代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener
{
private double arg=0;
private String op="=";
private boolean start=true;
private JTextField disfield=new JTextField(12);
private JButton mbutton=new JButton("=");
private JButton []abutton={new JButton("7"),new JButton("8"),new JButton("9"),
new JButton("C"),new JButton("4"),new JButton("5"),new JButton("6"),
new JButton("*"),new JButton("1"),new JButton("2"),new JButton("3"),
new JButton("%"),new JButton("0"),new JButton("+"),new JButton("-"),
new JButton(".")};
public Calculator()
{
super("Calculator");
Container container=getContentPane();
container.setLayout(new FlowLayout(FlowLayout.CENTER));
container.add( disfield);
disfield.setEditable(false);
container.add(mbutton);
for(int i=0;i<16;i++)
{
container.add(abutton[i]);
}
setSize(200,200);
setVisible(true);
mbutton.addActionListener(this);
for(int i=0;i<16;i++)
{
abutton[i].addActionListener(this);
}
}
public void actionPerformed(ActionEvent e)
{
String s=e.getActionCommand();
if('0'<=s.charAt(0) && s.charAt(0)<='9'
|| s.equals("."))
{
if(start)
disfield.setText(s);
else
disfield.setText( disfield.getText()+s);
start=false;
}
else if(s.equals("C"))
{
disfield.setText(" ");
start=false;
}
else
{
if(start)
{
if(s.equals("-"))
{
disfield.setText(s);
start=false;
}
else
op = s;
}
else
{
double x=Double.parseDouble(disfield.getText());
//op=s;
calculate(x);
op=s;
start=true;
}
}
}
public void calculate(double n)
{
if(op.equals("+")) arg+=n;
else if(op.equals("-")) arg-=n;
else if(op.equals("*")) arg*=n;
else if(op.equals("%")) arg%=n;
else if(op.equals("=")) arg=n;
disfield.setText(""+arg);
}
public static void main(String srgs[])
{
Calculator cpp=new Calculator();
cpp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
程序代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener
{
private double arg=0;
private String op="=";
private boolean start=true;
private JTextField disfield=new JTextField(12);
private JButton mbutton=new JButton("=");
private JButton []abutton={new JButton("7"),new JButton("8"),new JButton("9"),
new JButton("C"),new JButton("4"),new JButton("5"),new JButton("6"),
new JButton("*"),new JButton("1"),new JButton("2"),new JButton("3"),
new JButton("%"),new JButton("0"),new JButton("+"),new JButton("-"),
new JButton(".")};
public Calculator()
{
super("Calculator");
Container container=getContentPane();
container.setLayout(new FlowLayout(FlowLayout.CENTER));
container.add( disfield);
disfield.setEditable(false);
container.add(mbutton);
for(int i=0;i<16;i++)
{
container.add(abutton[i]);
}
setSize(200,200);
setVisible(true);
mbutton.addActionListener(this);
for(int i=0;i<16;i++)
{
abutton[i].addActionListener(this);
}
}
public void actionPerformed(ActionEvent e)
{
String s=e.getActionCommand();
if('0'<=s.charAt(0) && s.charAt(0)<='9'
|| s.equals("."))
{
if(start)
disfield.setText(s);
else
disfield.setText( disfield.getText()+s);
start=false;
}
else if(s.equals("C"))
{
disfield.setText(" ");
start=false;
}
else
{
if(start)
{
if(s.equals("-"))
{
disfield.setText(s);
start=false;
}
else
op = s;
}
else
{
double x=Double.parseDouble(disfield.getText());
//op=s;
calculate(x);
op=s;
start=true;
}
}
}
public void calculate(double n)
{
if(op.equals("+")) arg+=n;
else if(op.equals("-")) arg-=n;
else if(op.equals("*")) arg*=n;
else if(op.equals("%")) arg%=n;
else if(op.equals("=")) arg=n;
disfield.setText(""+arg);
}
public static void main(String srgs[])
{
Calculator cpp=new Calculator();
cpp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.text.*;
public class ex_9_9_9 extends JFrame implements ActionListener
{
public static void main(String[] args)
{
ex_9_9_9 cl=new ex_9_9_9();
cl.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);}
});
} public ex_9_9_9()
{
super("TongShu");
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e){}
getContentPane().setLayout(new BorderLayout());
text=new JTextField();
text.setColumns(12);
text.setHorizontalAlignment(JTextField.RIGHT);
text.setEditable(false);
getContentPane().add(BorderLayout.NORTH,text);
JPanel panel=new JPanel();
panel.setLayout(new GridLayout(4,4));
JButton btn1=new JButton("1");
JButton btn2=new JButton("2");
JButton btn3=new JButton("3");
JButton btni=new JButton("+");
JButton btn4=new JButton("4");
JButton btn5=new JButton("5");
JButton btn6=new JButton("6");
JButton btnii=new JButton("-");
JButton btn7=new JButton("7");
JButton btn8=new JButton("8");
JButton btn9=new JButton("9");
JButton btniii=new JButton("*");
JButton btn0=new JButton("0");
JButton btndot=new JButton(".");
JButton btniiii=new JButton("/");
JButton btn=new JButton("=");
panel.add(btn1);
panel.add(btn2);
panel.add(btn3);
panel.add(btnii);
panel.add(btn4);
panel.add(btn5);
panel.add(btn6);
panel.add(btniii);
panel.add(btn7);
panel.add(btn8);
panel.add(btn9);
panel.add(btniiii);
panel.add(btn0);
panel.add(btndot);
panel.add(btni);
panel.add(btn);
getContentPane().add(BorderLayout.CENTER,panel);
btn0.addActionListener(this);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn3.addActionListener(this);
btn4.addActionListener(this);
btn5.addActionListener(this);
btn6.addActionListener(this);
btn7.addActionListener(this);
btn8.addActionListener(this);
btn9.addActionListener(this);
btndot.addActionListener(this);
Listener lst=new Listener();
btni.addActionListener(lst);
btnii.addActionListener(lst);
btniii.addActionListener(lst);
btniiii.addActionListener(lst);
btn.addActionListener(lst);
text.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
inputFlag=false;
text.setText("");
count1=0;
count2=0;
}
});
super.setSize(200,160);
super.setVisible(true);
} public void actionPerformed(ActionEvent e)
{
if(!inputFlag)
{
if (!((JButton)(e.getSource())).getActionCommand().equals("."))
text.setText(text.getText()+((JButton)(e.getSource())).getActionCommand());
else
{
for(int i=0;i<text.getText().length();i++)
{
if(text.getText().substring(i,i+1).equals(".")) return;
}
text.setText(text.getText()+"."); return;
}
}
else
{text.setText(((JButton)(e.getSource())).getActionCommand());inputFlag=false;}
} class Listener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(!((JButton)(e.getSource())).getActionCommand().equals("="))
action(((JButton)(e.getSource())).getActionCommand());
else
getResult(sumFlag);
}
} private void action(String str)
{
if(count1==0)
count1=Double.parseDouble(text.getText());
else if(!inputFlag)
getResult(sumFlag);
if(str.equals("+")) sumFlag=1;
if(str.equals("-")) sumFlag=2;
if(str.equals("*")) sumFlag=3;
if(str.equals("/")) sumFlag=4;
inputFlag=true;
} private void getResult(int sumFlag)
{
count2=Double.parseDouble(text.getText());
switch(sumFlag)
{
case 1:count1=count1+count2;break;
case 2:count1=count1-count2;break;
case 3:count1=count1*count2;break;
case 4:count1=count1/count2;break;
} text.setText(new Double(count1).toString());
inputFlag=true;
} private JTextField text;
private double count1;
private double count2;
private boolean inputFlag=false;
private int sumFlag=1;
}