java計算器布局源代碼 java計算器簡單代碼

求JAVA語言寫的計算器的代碼。用GridLayout布局。

package com.citi.Util;

為舞陽等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及舞陽網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站設計、成都網(wǎng)站建設、舞陽網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.*;

/**

* @author yc80549

*

*/

public class Calculator extends JFrame implements ActionListener {

/**

*

*

*/

private static final long serialVersionUID = 1L;

private JTextField expression = new JTextField();

private JPanel buttonContainer = new JPanel();

private JPanel operators = new JPanel();

private JButton b1 = new JButton("1");

private JButton b2 = new JButton("2");

private JButton b3 = new JButton("3");

private JButton b4 = new JButton("4");

private JButton b5 = new JButton("5");

private JButton b6 = new JButton("6");

private JButton b7 = new JButton("7");

private JButton b8 = new JButton("8");

private JButton b9 = new JButton("9");

private JButton b0 = new JButton("0");

private JButton bpoint = new JButton(".");

private JButton bracket1 = new JButton("(");

private JButton bracket2 = new JButton(")");

private JButton plus = new JButton("+");

private JButton minus = new JButton("-");

private JButton multiply = new JButton("*");

private JButton divide = new JButton("/");

private JButton getResult = new JButton("=");

private JButton backSpace = new JButton("Backspace");

private JButton clear = new JButton("C");

private JButton OFF = new JButton("OFF");

private StringCalculate2 cacu = new StringCalculate2();

public Calculator() {

super();

setVisible(true);

this.setLayout(new BorderLayout());

this.setSize(400, 220);

Toolkit tk = Toolkit.getDefaultToolkit();

int width = (int) tk.getScreenSize().getWidth();

int height = (int) tk.getScreenSize().getHeight();

this.setLocation((int) ((width - getSize().getWidth()) / 2),

(int) ((height - getSize().getHeight()) / 2));

this.locate();

this.addAllListener();

}

public void locate() {

buttonContainer.setLayout(new GridLayout(4, 4));

buttonContainer.add(b1);

buttonContainer.add(b2);

buttonContainer.add(b3);

buttonContainer.add(plus);

buttonContainer.add(b4);

buttonContainer.add(b5);

buttonContainer.add(b6);

buttonContainer.add(minus);

buttonContainer.add(b7);

buttonContainer.add(b8);

buttonContainer.add(b9);

buttonContainer.add(multiply);

buttonContainer.add(b0);

buttonContainer.add(bpoint);

buttonContainer.add(getResult);

buttonContainer.add(divide);

operators.add(bracket1);

operators.add(bracket2);

operators.add(backSpace);

operators.add(clear);

operators.add(OFF);

this.add(expression, BorderLayout.NORTH);

this.add(buttonContainer, BorderLayout.CENTER);

this.add(operators, BorderLayout.SOUTH);

}

public void addAllListener() {

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

b4.addActionListener(this);

b5.addActionListener(this);

b6.addActionListener(this);

b7.addActionListener(this);

b8.addActionListener(this);

b9.addActionListener(this);

b0.addActionListener(this);

plus.addActionListener(this);

multiply.addActionListener(this);

divide.addActionListener(this);

minus.addActionListener(this);

bpoint.addActionListener(this);

bracket1.addActionListener(this);

bracket2.addActionListener(this);

getResult.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

try {

double result = cacu.parse(expression.getText());

expression.setText("" + result);

} catch (Exception e1) {

System.err

.println("invaild expression or RuntimeException");

}

}

});

clear.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

expression.setText("");

}

});

OFF.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

System.exit(1);

}

});

backSpace.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

expression.setText(expression.getText().substring(0,

expression.getText().length() - 1));

}

});

}

public void actionPerformed(ActionEvent e) {

JButton source = (JButton) e.getSource();

expression.setText(expression.getText() + source.getText());

}

public static void main(String[] args) {

Calculator cal = new Calculator();

cal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

package com.citi.Util;

import java.util.Stack;

import javax.swing.JOptionPane;

public class StringCalculate2 {

private StackDouble numbers = new StackDouble();

private StackCharacter chs = new StackCharacter();

private boolean compare(char str) {

if (chs.empty()) {

return true;

}

char last = (char) chs.lastElement();

switch (str) {

case '*': {

if (last == '+' || last == '-')

return true;

else

return false;

}

case '/': {

if (last == '+' || last == '-')

return true;

else

return false;

}

case '+':

return false;

case '-':

return false;

}

return true;

}

public Double caculate(String str) {

StringBuffer sb = new StringBuffer(str);

StringBuffer num = new StringBuffer();

String tem = null;

char next;

while (sb.length() 0) {

tem = sb.substring(0, 1);

sb.delete(0, 1);

if (isNum(tem.trim())) {

num.append(tem);

} else {

if (num.length() 0 !"".equals(num.toString().trim())) {

Double d = new Double(num.toString().trim());

numbers.push(d);

num.delete(0, num.length());

}

if (!chs.isEmpty()) {

while (!compare(tem.charAt(0))) {

caculate();

}

}

if (numbers.isEmpty()) {

num.append(tem);

} else {

chs.push(new Character(tem.charAt(0)));

}

next = sb.charAt(0);

if (next == '-') {

num.append(next);

sb.delete(0, 1);

}

}

}

Double d = new Double(num.toString().trim());

numbers.push(d);

while (!chs.isEmpty()) {

caculate();

}

return numbers.pop();

}

public void caculate() {

Double b = numbers.pop();

Double a = null;

a = numbers.pop();

char ope = chs.pop();

Double result = null;

switch (ope) {

case '+':

result = a + b;

numbers.push(result);

break;

case '-':

result = a - b;

numbers.push(result);

break;

case '*':

result = a * b;

numbers.push(result);

break;

case '/':

result = a / b;

numbers.push(result);

break;

}

}

private boolean isNum(String num) {

return num.matches("[0-9.]");

}

public Double parse(String str) {

int start = 0;

StringBuffer sts = new StringBuffer(str);

int end = -1;

while ((end = sts.indexOf(")")) 0) {

String s = sts.substring(start, end + 1);

int first = s.lastIndexOf("(");

Double value = caculate(sts.substring(first + 1, end));

sts.replace(first, end + 1, value.toString());

}

return caculate(sts.toString());

}

public static void main(String[] args) {

String exp = JOptionPane

.showInputDialog("please input expression you want to caculate!");

if (exp.trim().equals("")) {

System.out.println("you have input nothing");

return;

}

StringCalculate2 sc = new StringCalculate2();

JOptionPane.showMessageDialog(null, "the result is: " + sc.parse(exp));

}

}

求JAVA計算器源代碼

import java.awt.*;

import java.awt.event.*;

import java.lang.*;

import javax.swing.*;

public class Counter extends Frame

{

//聲明三個面板的布局

GridLayout gl1,gl2,gl3;

Panel p0,p1,p2,p3;

JTextField tf1;

TextField tf2;

Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;

StringBuffer str;//顯示屏所顯示的字符串

double x,y;//x和y都是運算數(shù)

int z;//Z表示單擊了那一個運算符.0表示"+",1表示"-",2表示"*",3表示"/"

static double m;//記憶的數(shù)字

public Counter()

{

gl1=new GridLayout(1,4,10,0);//實例化三個面板的布局

gl2=new GridLayout(4,1,0,15);

gl3=new GridLayout(4,5,10,15);

tf1=new JTextField(27);//顯示屏

tf1.setHorizontalAlignment(JTextField.RIGHT);

tf1.setEnabled(false);

tf1.setText("0");

tf2=new TextField(10);//顯示記憶的索引值

tf2.setEditable(false);

//實例化所有按鈕、設置其前景色并注冊監(jiān)聽器

b0=new Button("Backspace");

b0.setForeground(Color.red);

b0.addActionListener(new Bt());

b1=new Button("CE");

b1.setForeground(Color.red);

b1.addActionListener(new Bt());

b2=new Button("C");

b2.setForeground(Color.red);

b2.addActionListener(new Bt());

b3=new Button("MC");

b3.setForeground(Color.red);

b3.addActionListener(new Bt());

b4=new Button("MR");

b4.setForeground(Color.red);

b4.addActionListener(new Bt());

b5=new Button("MS");

b5.setForeground(Color.red);

b5.addActionListener(new Bt());

b6=new Button("M+");

b6.setForeground(Color.red);

b6.addActionListener(new Bt());

b7=new Button("7");

b7.setForeground(Color.blue);

b7.addActionListener(new Bt());

b8=new Button("8");

b8.setForeground(Color.blue);

b8.addActionListener(new Bt());

b9=new Button("9");

b9.setForeground(Color.blue);

b9.addActionListener(new Bt());

b10=new Button("/");

b10.setForeground(Color.red);

b10.addActionListener(new Bt());

b11=new Button("sqrt");

b11.setForeground(Color.blue);

b11.addActionListener(new Bt());

b12=new Button("4");

b12.setForeground(Color.blue);

b12.addActionListener(new Bt());

b13=new Button("5");

b13.setForeground(Color.blue);

b13.addActionListener(new Bt());

b14=new Button("6");

b14.setForeground(Color.blue);

b14.addActionListener(new Bt());

b15=new Button("*");

b15.setForeground(Color.red);

b15.addActionListener(new Bt());

b16=new Button("%");

b16.setForeground(Color.blue);

b16.addActionListener(new Bt());

b17=new Button("1");

b17.setForeground(Color.blue);

b17.addActionListener(new Bt());

b18=new Button("2");

b18.setForeground(Color.blue);

b18.addActionListener(new Bt());

b19=new Button("3");

b19.setForeground(Color.blue);

b19.addActionListener(new Bt());

b20=new Button("-");

b20.setForeground(Color.red);

b20.addActionListener(new Bt());

b21=new Button("1/X");

b21.setForeground(Color.blue);

b21.addActionListener(new Bt());

b22=new Button("0");

b22.setForeground(Color.blue);

b22.addActionListener(new Bt());

b23=new Button("+/-");

b23.setForeground(Color.blue);

b23.addActionListener(new Bt());

b24=new Button(".");

b24.setForeground(Color.blue);

b24.addActionListener(new Bt());

b25=new Button("+");

b25.setForeground(Color.red);

b25.addActionListener(new Bt());

b26=new Button("=");

b26.setForeground(Color.red);

b26.addActionListener(new Bt());

//實例化四個面板

p0=new Panel();

p1=new Panel();

p2=new Panel();

p3=new Panel();

//創(chuàng)建一個空字符串緩沖區(qū)

str=new StringBuffer();

//添加面板p0中的組件和設置其在框架中的位置和大小

p0.add(tf1);

p0.setBounds(10,25,300,40);

//添加面板p1中的組件和設置其在框架中的位置和大小

p1.setLayout(gl1);

p1.add(tf2);

p1.add(b0);

p1.add(b1);

p1.add(b2);

p1.setBounds(10,65,300,25);

//添加面板p2中的組件并設置其的框架中的位置和大小

p2.setLayout(gl2);

p2.add(b3);

p2.add(b4);

p2.add(b5);

p2.add(b6);

p2.setBounds(10,110,40,150);

//添加面板p3中的組件并設置其在框架中的位置和大小

p3.setLayout(gl3);//設置p3的布局

p3.add(b7);

p3.add(b8);

p3.add(b9);

p3.add(b10);

p3.add(b11);

p3.add(b12);

p3.add(b13);

p3.add(b14);

p3.add(b15);

p3.add(b16);

p3.add(b17);

p3.add(b18);

p3.add(b19);

p3.add(b20);

p3.add(b21);

p3.add(b22);

p3.add(b23);

p3.add(b24);

p3.add(b25);

p3.add(b26);

p3.setBounds(60,110,250,150);

//設置框架中的布局為空布局并添加4個面板

setLayout(null);

add(p0);

add(p1);

add(p2);

add(p3);

setResizable(false);//禁止調整框架的大小

//匿名類關閉窗口

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e1)

{

System.exit(0);

}

});

setBackground(Color.lightGray);

setBounds(100,100,320,280);

setVisible(true);

}

//構造監(jiān)聽器

class Bt implements ActionListener

{

public void actionPerformed(ActionEvent e2)

{

try{

if(e2.getSource()==b1)//選擇"CE"清零

{

tf1.setText("0");//把顯示屏清零

str.setLength(0);//清空字符串緩沖區(qū)以準備接收新的輸入運算數(shù)

}

else if(e2.getSource()==b2)//選擇"C"清零

{

tf1.setText("0");//把顯示屏清零

str.setLength(0);

}

else if(e2.getSource()==b23)//單擊"+/-"選擇輸入的運算數(shù)是正數(shù)還是負數(shù)

{

x=Double.parseDouble(tf1.getText().trim());

tf1.setText(""+(-x));

}

else if(e2.getSource()==b25)//單擊加號按鈕獲得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);//清空緩沖區(qū)以便接收新的另一個運算數(shù)

y=0d;

z=0;

}

else if(e2.getSource()==b20)//單擊減號按鈕獲得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);

y=0d;

z=1;

}

else if(e2.getSource()==b15)//單擊乘號按鈕獲得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);

y=0d;

z=2;

}

else if(e2.getSource()==b10)//單擊除號按鈕獲得x的值和z的值并空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);

y=0d;

z=3;

}

else if(e2.getSource()==b26)//單擊等號按鈕輸出計算結果

{

str.setLength(0);

switch(z)

{

case 0 : tf1.setText(""+(x+y));break;

case 1 : tf1.setText(""+(x-y));break;

case 2 : tf1.setText(""+(x*y));break;

case 3 : tf1.setText(""+(x/y));break;

}

}

else if(e2.getSource()==b24)//單擊"."按鈕輸入小數(shù)

{

if(tf1.getText().trim().indexOf(′.′)!=-1)//判斷字符串中是否已經(jīng)包含了小數(shù)點

{

}

else//如果沒數(shù)點有小

{

if(tf1.getText().trim().equals("0"))//如果初時顯示為0

{

str.setLength(0);

tf1.setText((str.append("0"+e2.getActionCommand())).toString());

}

else if(tf1.getText().trim().equals(""))//如果初時顯示為空則不做任何操作

{

}

else

{

tf1.setText(str.append(e2.getActionCommand()).toString());

}

}

y=0d;

}

else if(e2.getSource()==b11)//求平方根

{

x=Double.parseDouble(tf1.getText().trim());

tf1.setText("數(shù)字格式異常");

if(x0)

tf1.setText("負數(shù)沒有平方根");

else

tf1.setText(""+Math.sqrt(x));

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b16)//單擊了"%"按鈕

{

x=Double.parseDouble(tf1.getText().trim());

tf1.setText(""+(0.01*x));

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b21)//單擊了"1/X"按鈕

{

x=Double.parseDouble(tf1.getText().trim());

if(x==0)

{

tf1.setText("除數(shù)不能為零");

}

else

{

tf1.setText(""+(1/x));

}

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b3)//MC為清除內存

{

m=0d;

tf2.setText("");

str.setLength(0);

}

else if(e2.getSource()==b4)//MR為重新調用存儲的數(shù)據(jù)

{

if(tf2.getText().trim()!="")//有記憶數(shù)字

{

tf1.setText(""+m);

}

}

else if(e2.getSource()==b5)//MS為存儲顯示的數(shù)據(jù)

{

m=Double.parseDouble(tf1.getText().trim());

tf2.setText("M");

tf1.setText("0");

str.setLength(0);

}

else if(e2.getSource()==b6)//M+為將顯示的數(shù)字與已經(jīng)存儲的數(shù)據(jù)相加要查看新的數(shù)字單擊MR

{

m=m+Double.parseDouble(tf1.getText().trim());

}

else//選擇的是其他的按鈕

{

if(e2.getSource()==b22)//如果選擇的是"0"這個數(shù)字鍵

{

if(tf1.getText().trim().equals("0"))//如果顯示屏顯示的為零不做操作

{

}

else

{

tf1.setText(str.append(e2.getActionCommand()).toString());

y=Double.parseDouble(tf1.getText().trim());

}

}

else if(e2.getSource()==b0)//選擇的是“BackSpace”按鈕

{

if(!tf1.getText().trim().equals("0"))//如果顯示屏顯示的不是零

{

if(str.length()!=1)

{

tf1.setText(str.delete(str.length()-1,str.length()).toString());//可能拋出字符串越界異常

}

else

{

tf1.setText("0");

str.setLength(0);

}

}

y=Double.parseDouble(tf1.getText().trim());

}

else//其他的數(shù)字鍵

{

tf1.setText(str.append(e2.getActionCommand()).toString());

y=Double.parseDouble(tf1.getText().trim());

}

}

}

catch(NumberFormatException e){

tf1.setText("數(shù)字格式異常");

}

catch(StringIndexOutOfBoundsException e){

tf1.setText("字符串索引越界");

}

}

}

public static void main(String args[])

{

new Counter();

}

}

java計算器的源代碼

import java.awt.*;

import java.awt.event.*;

import java.lang.*;

import javax.swing.*;

public class Counter extends Frame

{

//聲明三個面板的布局

GridLayout gl1,gl2,gl3;

Panel p0,p1,p2,p3;

JTextField tf1;

TextField tf2;

Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;

StringBuffer str;//顯示屏所顯示的字符串

double x,y;//x和y都是運算數(shù)

int z;//Z表示單擊了那一個運算符.0表示"+",1表示"-",2表示"*",3表示"/"

static double m;//記憶的數(shù)字

public Counter()

{

gl1=new GridLayout(1,4,10,0);//實例化三個面板的布局

gl2=new GridLayout(4,1,0,15);

gl3=new GridLayout(4,5,10,15);

tf1=new JTextField(27);//顯示屏

tf1.setHorizontalAlignment(JTextField.RIGHT);

tf1.setEnabled(false);

tf1.setText("0");

tf2=new TextField(10);//顯示記憶的索引值

tf2.setEditable(false);

//實例化所有按鈕、設置其前景色并注冊監(jiān)聽器

b0=new Button("Backspace");

b0.setForeground(Color.red);

b0.addActionListener(new Bt());

b1=new Button("CE");

b1.setForeground(Color.red);

b1.addActionListener(new Bt());

b2=new Button("C");

b2.setForeground(Color.red);

b2.addActionListener(new Bt());

b3=new Button("MC");

b3.setForeground(Color.red);

b3.addActionListener(new Bt());

b4=new Button("MR");

b4.setForeground(Color.red);

b4.addActionListener(new Bt());

b5=new Button("MS");

b5.setForeground(Color.red);

b5.addActionListener(new Bt());

b6=new Button("M+");

b6.setForeground(Color.red);

b6.addActionListener(new Bt());

b7=new Button("7");

b7.setForeground(Color.blue);

b7.addActionListener(new Bt());

b8=new Button("8");

b8.setForeground(Color.blue);

b8.addActionListener(new Bt());

b9=new Button("9");

b9.setForeground(Color.blue);

b9.addActionListener(new Bt());

b10=new Button("/");

b10.setForeground(Color.red);

b10.addActionListener(new Bt());

b11=new Button("sqrt");

b11.setForeground(Color.blue);

b11.addActionListener(new Bt());

b12=new Button("4");

b12.setForeground(Color.blue);

b12.addActionListener(new Bt());

b13=new Button("5");

b13.setForeground(Color.blue);

b13.addActionListener(new Bt());

b14=new Button("6");

b14.setForeground(Color.blue);

b14.addActionListener(new Bt());

b15=new Button("*");

b15.setForeground(Color.red);

b15.addActionListener(new Bt());

b16=new Button("%");

b16.setForeground(Color.blue);

b16.addActionListener(new Bt());

b17=new Button("1");

b17.setForeground(Color.blue);

b17.addActionListener(new Bt());

b18=new Button("2");

b18.setForeground(Color.blue);

b18.addActionListener(new Bt());

b19=new Button("3");

b19.setForeground(Color.blue);

b19.addActionListener(new Bt());

b20=new Button("-");

b20.setForeground(Color.red);

b20.addActionListener(new Bt());

b21=new Button("1/X");

b21.setForeground(Color.blue);

b21.addActionListener(new Bt());

b22=new Button("0");

b22.setForeground(Color.blue);

b22.addActionListener(new Bt());

b23=new Button("+/-");

b23.setForeground(Color.blue);

b23.addActionListener(new Bt());

b24=new Button(".");

b24.setForeground(Color.blue);

b24.addActionListener(new Bt());

b25=new Button("+");

b25.setForeground(Color.red);

b25.addActionListener(new Bt());

b26=new Button("=");

b26.setForeground(Color.red);

b26.addActionListener(new Bt());

//實例化四個面板

p0=new Panel();

p1=new Panel();

p2=new Panel();

p3=new Panel();

//創(chuàng)建一個空字符串緩沖區(qū)

str=new StringBuffer();

//添加面板p0中的組件和設置其在框架中的位置和大小

p0.add(tf1);

p0.setBounds(10,25,300,40);

//添加面板p1中的組件和設置其在框架中的位置和大小

p1.setLayout(gl1);

p1.add(tf2);

p1.add(b0);

p1.add(b1);

p1.add(b2);

p1.setBounds(10,65,300,25);

//添加面板p2中的組件并設置其的框架中的位置和大小

p2.setLayout(gl2);

p2.add(b3);

p2.add(b4);

p2.add(b5);

p2.add(b6);

p2.setBounds(10,110,40,150);

//添加面板p3中的組件并設置其在框架中的位置和大小

p3.setLayout(gl3);//設置p3的布局

p3.add(b7);

p3.add(b8);

p3.add(b9);

p3.add(b10);

p3.add(b11);

p3.add(b12);

p3.add(b13);

p3.add(b14);

p3.add(b15);

p3.add(b16);

p3.add(b17);

p3.add(b18);

p3.add(b19);

p3.add(b20);

p3.add(b21);

p3.add(b22);

p3.add(b23);

p3.add(b24);

p3.add(b25);

p3.add(b26);

p3.setBounds(60,110,250,150);

//設置框架中的布局為空布局并添加4個面板

setLayout(null);

add(p0);

add(p1);

add(p2);

add(p3);

setResizable(false);//禁止調整框架的大小

//匿名類關閉窗口

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e1)

{

System.exit(0);

}

});

setBackground(Color.lightGray);

setBounds(100,100,320,280);

setVisible(true);

}

//構造監(jiān)聽器

class Bt implements ActionListener

{

public void actionPerformed(ActionEvent e2)

{

try{

if(e2.getSource()==b1)//選擇"CE"清零

{

tf1.setText("0");//把顯示屏清零

str.setLength(0);//清空字符串緩沖區(qū)以準備接收新的輸入運算數(shù)

}

else if(e2.getSource()==b2)//選擇"C"清零

{

tf1.setText("0");//把顯示屏清零

str.setLength(0);

}

else if(e2.getSource()==b23)//單擊"+/-"選擇輸入的運算數(shù)是正數(shù)還是負數(shù)

{

x=Double.parseDouble(tf1.getText().trim());

tf1.setText(""+(-x));

}

else if(e2.getSource()==b25)//單擊加號按鈕獲得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);//清空緩沖區(qū)以便接收新的另一個運算數(shù)

y=0d;

z=0;

}

else if(e2.getSource()==b20)//單擊減號按鈕獲得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);

y=0d;

z=1;

}

else if(e2.getSource()==b15)//單擊乘號按鈕獲得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);

y=0d;

z=2;

}

else if(e2.getSource()==b10)//單擊除號按鈕獲得x的值和z的值并空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);

y=0d;

z=3;

}

else if(e2.getSource()==b26)//單擊等號按鈕輸出計算結果

{

str.setLength(0);

switch(z)

{

case 0 : tf1.setText(""+(x+y));break;

case 1 : tf1.setText(""+(x-y));break;

case 2 : tf1.setText(""+(x*y));break;

case 3 : tf1.setText(""+(x/y));break;

}

}

else if(e2.getSource()==b24)//單擊"."按鈕輸入小數(shù)

{

if(tf1.getText().trim().indexOf(′.′)!=-1)//判斷字符串中是否已經(jīng)包含了小數(shù)點

{

}

else//如果沒數(shù)點有小

{

if(tf1.getText().trim().equals("0"))//如果初時顯示為0

{

str.setLength(0);

tf1.setText((str.append("0"+e2.getActionCommand())).toString());

}

else if(tf1.getText().trim().equals(""))//如果初時顯示為空則不做任何操作

{

}

else

{

tf1.setText(str.append(e2.getActionCommand()).toString());

}

}

y=0d;

}

else if(e2.getSource()==b11)//求平方根

{

x=Double.parseDouble(tf1.getText().trim());

tf1.setText("數(shù)字格式異常");

if(x0)

tf1.setText("負數(shù)沒有平方根");

else

tf1.setText(""+Math.sqrt(x));

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b16)//單擊了"%"按鈕

{

x=Double.parseDouble(tf1.getText().trim());

tf1.setText(""+(0.01*x));

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b21)//單擊了"1/X"按鈕

{

x=Double.parseDouble(tf1.getText().trim());

if(x==0)

{

tf1.setText("除數(shù)不能為零");

}

else

{

tf1.setText(""+(1/x));

}

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b3)//MC為清除內存

{

m=0d;

tf2.setText("");

str.setLength(0);

}

else if(e2.getSource()==b4)//MR為重新調用存儲的數(shù)據(jù)

{

if(tf2.getText().trim()!="")//有記憶數(shù)字

{

tf1.setText(""+m);

}

}

else if(e2.getSource()==b5)//MS為存儲顯示的數(shù)據(jù)

{

m=Double.parseDouble(tf1.getText().trim());

tf2.setText("M");

tf1.setText("0");

str.setLength(0);

}

else if(e2.getSource()==b6)//M+為將顯示的數(shù)字與已經(jīng)存儲的數(shù)據(jù)相加要查看新的數(shù)字單擊MR

{

m=m+Double.parseDouble(tf1.getText().trim());

}

else//選擇的是其他的按鈕

{

if(e2.getSource()==b22)//如果選擇的是"0"這個數(shù)字鍵

{

if(tf1.getText().trim().equals("0"))//如果顯示屏顯示的為零不做操作

{

}

else

{

tf1.setText(str.append(e2.getActionCommand()).toString());

y=Double.parseDouble(tf1.getText().trim());

}

}

else if(e2.getSource()==b0)//選擇的是“BackSpace”按鈕

{

if(!tf1.getText().trim().equals("0"))//如果顯示屏顯示的不是零

{

if(str.length()!=1)

{

tf1.setText(str.delete(str.length()-1,str.length()).toString());//可能拋出字符串越界異常

}

else

{

tf1.setText("0");

str.setLength(0);

}

}

y=Double.parseDouble(tf1.getText().trim());

}

else//其他的數(shù)字鍵

{

tf1.setText(str.append(e2.getActionCommand()).toString());

y=Double.parseDouble(tf1.getText().trim());

}

}

}

catch(NumberFormatException e){

tf1.setText("數(shù)字格式異常");

}

catch(StringIndexOutOfBoundsException e){

tf1.setText("字符串索引越界");

}

}

}

public static void main(String args[])

{

new Counter();

求java簡單計算器源代碼

/*

*

*

*/

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.Vector;

public class Tuo

{

String str1="0"; //運算數(shù)1 初值一定為0 為了程序的安全

String str2="0"; //運算數(shù)2

String fh="+"; //運算符

String jg="";//結果

//狀態(tài)開關 重要

int k1=1;//開關1 用于選擇輸入方向 將要寫入str2或 str2

int k2=1;//開關2 符號鍵 次數(shù) k21說明進行的是2+3-9+8 這樣的多符號運算

int k3=1;//開關3 str1 是否可以被清0 ==1時可以 !=1時不能被清0

int k4=1;//開關4 str2 同上

int k5=1;//開關5 控制小數(shù)點可否被錄入 ==1時可以 !=1 輸入的小數(shù)點被丟掉

JButton jicunqi; //寄存器 記錄 是否連續(xù)按下符號鍵

Vector vt=new Vector(20,10);

JFrame frame=new JFrame("sunshine---計算器");

JTextField jg_TextField=new JTextField(jg,20);//20列

JButton clear_Button=new JButton("清除");

JButton button0=new JButton("0");

JButton button1=new JButton("1");

JButton button2=new JButton("2");

JButton button3=new JButton("3");

JButton button4=new JButton("4");

JButton button5=new JButton("5");

JButton button6=new JButton("6");

JButton button7=new JButton("7");

JButton button8=new JButton("8");

JButton button9=new JButton("9");

JButton button_Dian=new JButton(".");

JButton button_jia=new JButton("+");

JButton button_jian=new JButton("-");

JButton button_cheng=new JButton("*");

JButton button_chu=new JButton("/");

JButton button_dy=new JButton("=");

////////////////////////////////////////////////////////////////////////

public static void main(String[] args)

{

Tuo tuo=new Tuo();

}

/////////////////////////////////////////////////////////////////////////

Tuo()

{

button0.setMnemonic(KeyEvent.VK_0);//等效鍵

//其它 等效鍵 略,

jg_TextField.setHorizontalAlignment(JTextField.RIGHT );//文本框 右對齊

JPanel pan=new JPanel();

pan.setLayout(new GridLayout(4,4,5,5));//四行四列 邊距為5像素

pan.add(button7);

pan.add(button8);

pan.add(button9);

pan.add(button_chu);

pan.add(button4);

pan.add(button5);

pan.add(button6);

pan.add(button_cheng);

pan.add(button1);

pan.add(button2);

pan.add(button3);

pan.add(button_jian);

pan.add(button0);

pan.add(button_Dian);

pan.add(button_dy);

pan.add(button_jia);

pan.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));//pan對象的邊距

JPanel pan2=new JPanel();

pan2.add(jg_TextField);

JPanel pan3=new JPanel(); //為什么要 多此一句呢? 因為我不會設置 按鈕的大小

pan3.setLayout(new FlowLayout());

pan3.add(clear_Button);

//clear_Button.setSize(10,10);//設置清零按鈕的大小 嗎的 不好使 ?。?/p>

frame.setLocation(300, 200); //主窗口 出現(xiàn)在位置

frame.setResizable(false); //不能調大小

frame.getContentPane().setLayout(new BorderLayout());

frame.getContentPane().add(pan2,BorderLayout.NORTH);

frame.getContentPane().add(pan,BorderLayout.CENTER);

frame.getContentPane().add(pan3,BorderLayout.SOUTH);

frame.pack();

frame.setVisible(true);

//以上是 控件 和 布局

//下面是事件處理 程 序

//--------------- 數(shù) 字 鍵 ----------------

class JianTing implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

String ss=((JButton)e.getSource()).getText();

jicunqi=(JButton)e.getSource();

vt.add(jicunqi);

if (k1==1)

{

if(k3==1)

{

str1="";

k5=1;//還原開關k5狀態(tài)

}

str1=str1+ss;

//k2=1;

k3=k3+1;

//System.out.println(str1);

jg_TextField.setText(str1);//顯示

}

else if(k1==2)

{

if (k4==1)

{

str2="";

k5=1; //還原開關k5狀態(tài)

}

str2=str2+ss;

//k2=2;

k4=k4+1;

///////////////測試////////////////

jg_TextField.setText(str2);

}

}

}

//--------符 號-----------

class JianTing_fh implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

String ss2=((JButton)e.getSource()).getText();

jicunqi=(JButton)e.getSource();

vt.add(jicunqi);

if(k2==1)

{

k1=2;//開關 k1 為1時,向數(shù)1寫 為2時,向數(shù)2寫

k5=1;

fh=ss2;

k2=k2+1;//按符號鍵的次數(shù)

}

else

{

int a=vt.size();

JButton c=(JButton)vt.get(a-2);

if(!(c.getText().equals("+"))!(c.getText().equals("-"))!(c.getText().equals("*"))!(c.getText().equals("/")))

//if(!(vt.get(a-2).getText().equals("-"))||!(vt.get(a-2).getText().equals("+"))||!(vt.get(a-2).getText().equals("*"))||!(vt.get(a-2).getText().equals("/")))

{ yuns();

str1=jg;

k1=2;//開關 k1 為1時,向數(shù)1寫 為2時,向數(shù)2寫

k5=1;

k4=1;

fh=ss2;

} k2=k2+1;

}

}

}

//--------清除-------

class JianTing_clear implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

jicunqi=(JButton)e.getSource();

vt.add(jicunqi);

k5=1;

k2=1;

k1=1;

k3=1;

k4=1;

str1="0";

str2="0";

fh="";

jg="";

jg_TextField.setText(jg);

vt.clear();

}

}

//----------------等 于 ---------------------

class JianTing_dy implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

jicunqi=(JButton)e.getSource();

vt.add(jicunqi);

yuns();

k1=1; //還原開關k1狀態(tài)

//str1=jg;

k2=1;

k3=1;//還原開關k3狀態(tài)

k4=1; //還原開關k4狀態(tài)

str1=jg; //為7+5=12 +5=17 這種計算做準備

}

}

//----------------小數(shù)點 ---------------------

class JianTing_xiaos implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

jicunqi=(JButton)e.getSource();

vt.add(jicunqi);

if(k5==1)

{

String ss2=((JButton)e.getSource()).getText();

if (k1==1)

{

if(k3==1)

{

str1="";

k5=1; //還原開關k5狀態(tài)

}

str1=str1+ss2;

//k2=1;

k3=k3+1;

//System.out.println(str1);

jg_TextField.setText(str1);//顯示

}

else if(k1==2)

{

if (k4==1)

{

str2="";

k5=1; //還原開關k5狀態(tài)

}

str2=str2+ss2;

//k2=2;

k4=k4+1;

///////////////測試////////////////

jg_TextField.setText(str2);

}

}

k5=k5+1; //

}

}

//注冊 監(jiān)聽器

JianTing_dy jt_dy=new JianTing_dy();

JianTing jt= new JianTing();//臨聽數(shù)字鍵

JianTing_fh jt_fh= new JianTing_fh();//臨 聽符 號鍵

JianTing_clear jt_c=new JianTing_clear(); //清除鍵

JianTing_xiaos jt_xs=new JianTing_xiaos();// 小數(shù)點 鍵

button7.addActionListener(jt);

button8.addActionListener(jt);

button9.addActionListener(jt);

button_chu.addActionListener(jt_fh);

button4.addActionListener(jt);

button5.addActionListener(jt);

button6.addActionListener(jt);

button_cheng.addActionListener(jt_fh);

button1.addActionListener(jt);

button2.addActionListener(jt);

button3.addActionListener(jt);

button_jian.addActionListener(jt_fh);

button0.addActionListener(jt);

button_Dian.addActionListener(jt_xs);

button_dy.addActionListener(jt_dy);

button_jia.addActionListener(jt_fh);

clear_Button.addActionListener(jt_c);

//關閉事件處理程序

frame.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

});

}

//---------------計 算------------------

public void yuns()

{

double a2;//運算數(shù)1

double b2;//運算數(shù)2

String c=fh;// 運算符

double jg2=0 ;//結果

if (c.equals(""))

{

//System.out.println("請輸入運算符");

jg_TextField.setText("請輸入運算符");

}

else

{

System.out.println("str1:"+str1);//調試時 使 用

System.out.println("str2:"+str2);//調試時 使 用

System.out.println("運算符:"+fh);//調試時 使 用

if (str1.equals(".")) //字符串 "." 轉換成double型數(shù)據(jù)時 會出錯 所以手工轉

str1="0.0";

if (str2.equals("."))

str2="0.0";

a2=Double.valueOf(str1).doubleValue();

b2=Double.valueOf(str2).doubleValue();

System.out.println("double型的a2:"+a2); //調試時 使 用

System.out.println("double型的b2:"+b2); //調試時 使 用

if (c.equals("+"))

{

jg2=a2+b2;

}

if (c.equals("-"))

{

jg2=a2-b2;

}

if (c.equals("*"))

{

jg2=a2*b2;

}

if (c.equals("/"))

{

if(b2==0)

{

jg2=0;//0000000000000 by 0 cu!

}

else

{

jg2=a2/b2;

}

}

System.out.println("double型a2"+fh+"b2結果:"+jg2);

System.out.println();

jg=((new Double(jg2)).toString());

jg_TextField.setText(jg);

}

}

}

當前名稱:java計算器布局源代碼 java計算器簡單代碼
分享路徑:http://bm7419.com/article18/dohhodp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、靜態(tài)網(wǎng)站、品牌網(wǎng)站設計、網(wǎng)頁設計公司、營銷型網(wǎng)站建設面包屑導航

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管