昨天用了一个下午,总算用java将一个计算器写了出来,看起来还不错,试了试,还可以,并学会了生成可执行的jar文件。
一言不合,贴个代码
package calculator;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Jisuan extends JFrame{
JTextField disply = new JTextField(50);
JButton JB0 = new JButton("0");
JButton JB1 = new JButton("1");
JButton JB2 = new JButton("2");
JButton JB3 = new JButton("3");
JButton JB4 = new JButton("4");
JButton JB5 = new JButton("5");
JButton JB6 = new JButton("6");
JButton JB7 = new JButton("7");
JButton JB8 = new JButton("8");
JButton JB9 = new JButton("9");
JButton JBans = new JButton("=");
JButton JBsub = new JButton("-");
JButton JBadd = new JButton("+");
JButton JBmul = new JButton("*");
JButton JBdiv = new JButton("/");
JButton JBpoint = new JButton(".");
JButton JBDC = new JButton("DC");
Jisuan( ){
JPanel p2 = new JPanel();
p2.setLayout(new GridLayout(4,4));
p2.add(JBpoint);
p2.add(JB0);
p2.add(JBDC);
p2.add(JBadd);
p2.add(JB1);
p2.add(JB2);
p2.add(JB3);
p2.add(JBsub);
p2.add(JB4);
p2.add(JB5);
p2.add(JB6);
p2.add(JBmul);
p2.add(JB7);
p2.add(JB8);
p2.add(JB9);
p2.add(JBdiv);
add(disply,BorderLayout.NORTH);
add(p2,BorderLayout.CENTER);
add(JBans,BorderLayout.SOUTH);
JB0.addActionListener(new JB0Listener());
JB1.addActionListener(new JB1Listener());
JB2.addActionListener(new JB2Listener());
JB3.addActionListener(new JB3Listener());
JB4.addActionListener(new JB4Listener());
JB5.addActionListener(new JB5Listener());
JB6.addActionListener(new JB6Listener());
JB7.addActionListener(new JB7Listener());
JB8.addActionListener(new JB8Listener());
JB9.addActionListener(new JB9Listener());
JBsub.addActionListener(new JBsubListener());
JBadd.addActionListener(new JBaddListener());
JBdiv.addActionListener(new JBdivListener());
JBmul.addActionListener(new JBmulListener());
JBans.addActionListener(new JBansListener());
JBpoint.addActionListener(new JBpointListener());
}
class JB0Listener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.number('0');
disply.setText(One.getdisply());
}
}
class JB1Listener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.number('1');
disply.setText(One.getdisply());
}
}
class JB2Listener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.number('2');
disply.setText(One.getdisply());
}
}
class JB3Listener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.number('3');
disply.setText(One.getdisply());
}
}
class JB4Listener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.number('4');
disply.setText(One.getdisply());
}
}
class JB5Listener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.number('5');
disply.setText(One.getdisply());
}
}
class JB6Listener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.number('6');
disply.setText(One.getdisply());
}
}
class JB7Listener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.number('7');
disply.setText(One.getdisply());
}
}
class JB8Listener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.number('8');
disply.setText(One.getdisply());
}
}
class JB9Listener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.number('9');
disply.setText(One.getdisply());
}
}
class JBpointListener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.number('.');
disply.setText(One.getdisply());
}
}
class JBaddListener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.StringTonum();
One.getOperator('+');
disply.setText(One.getdisply());
}
}
class JBsubListener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.StringTonum();
One.getOperator('-');
disply.setText(One.getdisply());
}
}
class JBmulListener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.StringTonum();
One.getOperator('*');
disply.setText(One.getdisply());
}
}
class JBdivListener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.StringTonum();
One.getOperator('/');
disply.setText(One.getdisply());
}
}
class JBansListener implements ActionListener{
public void actionPerformed(ActionEvent e)
{
One.StringTonum();
disply.setText(String.format("%.6f", One.getAns()));
}
}
}
public class One {
public static char num[] = new char[100];
public static char str[] = new char[200];
public static int i = 0,j = 0;
public static boolean judge = true;
public static String A,B;
public static char operator;
public static double numA,numB,ans;
public static void main(String[] args) {
Jisuan myFrame = new Jisuan();
myFrame.setTitle("OK");
myFrame.setSize(400,230);
myFrame.setVisible(true);
myFrame.setLocationRelativeTo(null);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void number(char c)
{
num[i++] = c;
str[j++] = c;
str[j++] = ' ';
}
public static void StringTonum()
{
if(judge)
{
A = String.valueOf(num);
numA = Double.parseDouble(A);
clean(num);
judge = false;
i=0;
}
else
{
B = String.valueOf(num);
numB = Double.parseDouble(B);
clean(num);
judge = true;
i=0;
}
}
public static void getOperator(char c)
{
operator = c;
str[j++] = c;
str[j++] = ' ';
}
public static String getdisply()
{
String temp;
temp = String.valueOf(str);
return temp;
}
public static void clean(char str[])
{
for(int i=0;i<100;i++)
{
str[i] = '\0';
}
}
public static double getAns()
{
switch (operator){
case '+':
ans = numA + numB;
break;
case '-':
ans = numA - numB;
break;
case '*':
ans = numA * numB;
break;
case '/':
ans = numA / numB;
break;
}
clean(str);
j = 0;
return ans;
}
}
可能写的有点冗余。。。