计算器 java源代码


//package 娱乐;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.DecimalFormat;
import javax.swing.*;

public class 计算器 extends JFrame implements ActionListener, ItemListener {
private JButton an[];

private JButton qingkong, zh;

private JTextField k;

private JPanel rq1, rq2, rq3;

int zz = 1;

private String string[] = { "7", "8", "9", "/", "6", "5", "4", "*", "3",
"2", "1", "-", "0", ".", "=", "+" };

private String s = "", shu1 = "", shu2 = "", shu3 = "";

private static int fo = 0;

JComboBox a;

private boolean ff = true;

public 计算_复杂() {
super("进制计算器");
Container c = getContentPane();
c.setLayout(new FlowLayout());
rq1 = new JPanel();
k = new JTextField(13);
rq1.add(k);
qingkong = new JButton("C");
rq1.add(qingkong);
c.add(rq1);
rq3 = new JPanel();
a = new JComboBox();
a.addItem("10进制转换为2进制");
a.addItem("10进制转换为8进制");
a.addItem("10进制转换为16进制");
a.addItem("2进制转换为8进制");
a.addItem("2进制转换为10进制");
a.addItem("2进制转换为16进制");
a.addItem("8进制转换为2进制");
a.addItem("8进制转换为10进制");
a.addItem("8进制转换为16进制");
a.addItem("16进制转换为2进制");
a.addItem("16进制转换为8进制");
a.addItem("16进制转换为10进制");
rq3.add(a);
zh = new JButton("转");
rq3.add(zh);
c.add(rq3);
rq2 = new JPanel();
rq2.setLayout(new GridLayout(4, 4, 10, 10));
an = new JButton[string.length];
for (int i = 0; i < string.length; i++) {
an[i] = new JButton(string[i]);
an[i].addActionListener(this);
rq2.add(an[i]);
}
c.add(rq2);
qingkong.addActionListener(this);
zh.addActionListener(this);
a.addItemListener(this);
setSize(200, 250);
setVisible(true);
try {
JMenuItem itemNative=new JMenuItem("系统平台风格");
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); // 设置界面样式
} catch (Exception e) {
e.printStackTrace();
}
setBounds(300,300,300,300);
setSize(220, 270);
setVisible(true);
}

public static void main(String[] args) {


计算_复杂 s = new 计算_复杂();
s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED) {
if (a.getSelectedItem().equals("10进制转换为2进制"))
zz = 1;
if (a.getSelectedItem().equals("10进制转换为8进制"))
zz = 2;
if (a.getSelectedItem().equals("10进制转换为16进制"))
zz = 3;
if (a.getSelectedItem().equals("2进制转换为8进制"))
zz = 4;
if (a.getSelectedItem().equals("2进制转换为10进制"))
zz = 5;
if (a.getSelectedItem().equals("2进制转换为16进制"))
zz = 6;
if (a.getSelectedItem().equals("8进制转换为2进制"))
zz = 7;
if (a.getSelectedItem().equals("8进制转换为10进制"))
zz = 8;
if (a.getSelectedItem().equals("8进制转换为16进制"))
zz = 9;
if (a.getSelectedItem().equals("16进制转换为2进制"))
zz = 10;
if (a.getSelectedItem().equals("16进制转换为8进制"))
zz = 11;
if (a.getSelectedItem().equals("16进制转换为10进制"))
zz = 12;
}
}

public void actionPerformed(ActionEvent e) {
if (!(e.getSource() == an[3] || e.getSource() == an[7]
|| e.getSource() == an[11] || e.getSource() == an[13]
|| e.getSource() == an[14] || e.getSource() == an[15] || e
.getSource() == qingkong|| e.getSource() == zh)) {
if (e.getSource() == an[12]) {
s += e.getActionCommand();
char a = s.charAt(0);
if (a == '0') {
s = "0.";
k.setText(s);
}
else{
k.setText(s);
ff = true;
}

}
else {
s += e.getActionCommand();
k.setText(s);
ff = true;
}
} else {
if (e.getSource() == zh) {
if (k.getText().equals(""))
;
else
{
jinzhi();
fo = 0;
shu1 = "";
s = "";
}
}
if (e.getSource() == qingkong) {
k.setText("");
fo = 0;
shu1 = "";
s = "";
}
if (e.getSource() == an[13]) {
String ss = s;
ss += e.getActionCommand();
char a = ss.charAt(0);
if (a == '.') {
s = "";
} else {
if (ss.matches("[0-9].")) {
s += e.getActionCommand();
k.setText(s);
}
}

}
if (ff) {
ff = false;
if (e.getSource() == an[3]) {
if (k.getText().equals(""))
;
else {

if (shu1.equals("")) {
shu1 = k.getText();
k.setText("/");
s = "";
fo = 3;
} else {
shu2 = k.getText();
jishu(fo, shu1, shu2);
fo = 3;
}
}
}
if (e.getSource() == an[7]) {
if (k.getText().equals(""))
;
else {
if (shu1.equals("")) {
shu1 = k.getText();
k.setText("*");
s = "";
fo = 7;
} else {
shu2 = k.getText();
jishu(fo, shu1, shu2);
fo = 7;
}
}
}
if (e.getSource() == an[11]) {
if (k.getText().equals(""))
;
else {
if (shu1.equals("")) {
shu1 = k.getText();
k.setText("-");
s = "";
fo = 11;
} else {
shu2 = k.getText();
jishu(fo, shu1, shu2);
fo = 11;
}
}
}
if (e.getSource() == an[15]) {
if (k.getText().equals(""))
;
else {
if (shu1.equals("")) {
shu1 = k.getText();
k.setText("+");
s = "";
fo = 15;
} else {
shu2 = k.getText();
jishu(fo, shu1, shu2);
fo = 15;
}
}
}
if (e.getSource() == an[14]) {
if (k.getText().equals("") || shu1.equals(""))
ff = true;
else {
shu2 = k.getText();
jishu(fo, shu1, shu2);
}
}
}
}
}

public void jishu(int fj, String s1, String s2) {
DecimalFormat twoDigits = new DecimalFormat("0.00");
double a, b;
a = Double.parseDouble(s1);
b = Double.parseDouble(s2);
switch (fj) {
case 3:
shu3 = twoDigits.format((double) (a / b));
k.setText(shu3);
break;
case 7:
shu3 = twoDigits.format((double) (a * b));
k.setText(shu3);
break;
case 11:
shu3 = twoDigits.format((double) (a - b));
k.setText(shu3);
break;
case 15:
shu3 = twoDigits.format((double) (a + b));
k.setText(shu3);
break;
}
s = "";
shu1 = shu3;
shu2 = "";
}

public void jinzhi() {
try{
if (zz == 1)
k.setText(Integer.toBinaryString(Integer.parseInt(k.getText())));
else if (zz == 2)
k.setText(Integer.toOctalString(Integer.parseInt(k.getText())));
else if (zz == 3)
k.setText(Integer.toHexString(Integer.parseInt(k.getText())));
else if (zz == 4) {
int a = j1(k.getText(), "[0-1]+", 2);
k.setText(Integer.toOctalString(a));
} else if (zz == 5) {
j1(k.getText(), "[0-1]+", 2);

} else if (zz == 6) {
int a = j1(k.getText(), "[0-1]+", 2);
k.setText(Integer.toHexString(a));
} else if (zz == 7) {
int a = j1(k.getText(), "[0-7]+", 8);
k.setText(Integer.toBinaryString(a));
} else if (zz == 8) {
j1(k.getText(), "[0-7]+", 8);
} else if (zz == 9) {
int a = j1(k.getText(), "[0-7]+", 8);
k.setText(Integer.toHexString(a));
} else if (zz == 10) {
int a = j2();
k.setText(Integer.toBinaryString(a));
} else if (zz == 11) {
int a = j2();
k.setText(Integer.toOctalString(a));
} else if (zz == 12) {
j2();
}
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null, "检查输入的参数");
}
}

public int j1(String zhuanhuan, String a1, int a3) {
if (zhuanhuan.matches(a1)) {
int bb, gg = 0, cc = 1;
String s = zhuanhuan;
StringBuffer ss = new StringBuffer(s);

ss.reverse();
for (int i = 0; i < ss.length(); i++) {
String jj = ss.charAt(i) + "";
bb = Integer.parseInt(jj);
if (i == 0)
gg += bb * cc;
else
gg += bb * (cc *= a3);
}
k.setText(gg + "");
return gg;
}
return 0;
}

public int j2() {
if (k.getText().matches("[0-9,a,b,c,d,e,f]+")) {
int bb, gg = 0, cc = 1;
String s = k.getText();
StringBuffer ss = new StringBuffer(s);
ss.reverse();
for (int i = 0; i < ss.length(); i++) {
String jj = ss.charAt(i) + "";
System.out.println(jj);
if (jj.equals("a"))
jj = "10";
if (jj.equals("b"))
jj = "11";
if (jj.equals("c"))
jj = "12";
if (jj.equals("d"))
jj = "13";
if (jj.equals("e"))
jj = "14";
if (jj.equals("f"))
jj = "15";
System.out.println(jj);
bb = Integer.parseInt(jj);
if (i == 0)
gg += bb * cc;
else
gg += bb * (cc *= 16);
}
k.setText(gg + "");
return gg;
}
return 0;
}

}


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值