java计算器源代码(java如何编写计算器代码)
本文目录
- java如何编写计算器代码
- 用JAVA编写的科学计算器源代码
- 求一份JAVA计算器源代码,要有()+-*/和清除键及小数点的,不用科学计算器
- 计算器java代码
- 要用java编的计算器代码
- 求一计算器java代码,最好简单一点(图形界面)
- java 计算器代码
- 速求java编程:计算器能在科学型与标准型之间切换的源代码
- 求大神发个完整简单的java计算器代码,
- java 计算器 源代码 后边计算部分
java如何编写计算器代码
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Calculator extends JFrame implements ActionListener { private boolean dotExist, operated, equaled; // 帮助运算的布尔变量 private double storedNumber; // 目前的结果 private char lastOperator; // 表示上一运算符 private JTextField operation; // 结果栏 private JButton dot, plus, minus, multi, div, sqrt, equal, changePN, clear; // 运算符 private JButton numbers; // 数字 // 构造者 public Calculator() { setTitle("Calculator"); // 初始化变量 dotExist = false; // 表示当前的数是否有小数点 operated = false; // 表示任意运算符是否被按下 equaled = false; // 表示等号是否被按下 storedNumber = 0; lastOperator = ’?’; // 初始化窗口变量 operation = new JTextField("0"); operation.setEditable(false); numbers = new JButton; for (int i = 0; i 《 10; i++) numbers = new JButton("" + i); dot = new JButton("."); plus = new JButton("+"); minus = new JButton("-"); multi = new JButton("*"); div = new JButton("/"); sqrt = new JButton("√"); equal = new JButton("="); changePN = new JButton("±"); clear = new JButton("AC"); // 将窗口物体放入窗口 GridBagLayout layout = new GridBagLayout(); getContentPane().setLayout(layout); addComponent(layout, operation, 0, 0, 4, 1); addComponent(layout, numbers, 1, 0, 1, 1); addComponent(layout, numbers, 1, 1, 1, 1); addComponent(layout, numbers, 1, 2, 1, 1); addComponent(layout, numbers, 2, 0, 1, 1); addComponent(layout, numbers, 2, 1, 1, 1); addComponent(layout, numbers, 2, 2, 1, 1); addComponent(layout, numbers, 3, 0, 1, 1); addComponent(layout, numbers, 3, 1, 1, 1); addComponent(layout, numbers, 3, 2, 1, 1); addComponent(layout, dot, 4, 0, 1, 1); addComponent(layout, numbers, 4, 1, 1, 1); addComponent(layout, sqrt, 4, 2, 1, 1); addComponent(layout, plus, 1, 3, 1, 1); addComponent(layout, minus, 2, 3, 1, 1); addComponent(layout, multi, 3, 3, 1, 1); addComponent(layout, div, 4, 3, 1, 1); addComponent(layout, equal, 5, 0, 2, 1); addComponent(layout, changePN, 5, 2, 1, 1); addComponent(layout, clear, 5, 3, 1, 1); } // 对按钮进行反应的方法 public void actionPerformed(ActionEvent e) { JButton btn = (JButton)e.getSource(); if (btn == clear) { operation.setText("0"); dotExist = false; storedNumber = 0; lastOperator = ’?’; } else if (btn == equal) { operate(’=’); equaled = true; } else if (btn == plus) { operate(’+’); equaled = false; } else if (btn == minus) { operate(’-’); equaled = false; } else if (btn == multi) { operate(’*’); equaled = false; } else if (btn == div) { operate(’/’); equaled = false; } else if (btn == changePN) { operate(’p’); operate(’=’); equaled = true; } else if (btn == sqrt) { operate(’s’); operate(’=’); equaled = true; } else { if (equaled) storedNumber = 0; for (int i = 0; i 《 10; i++) if (btn == numbers) { if (operation.getText().equals("0")) operation.setText("" + i); else if(! operated) operation.setText(operation.getText() + i); else { operation.setText("" + i); operated = false; } } if (btn == dot && ! dotExist) { operation.setText(operation.getText() + "."); dotExist = true; } } } // 进行运算的方法 private void operate(char operator) { double currentNumber = Double.valueOf(operation.getText()).doubleValue(); if (lastOperator == ’?’) storedNumber = currentNumber; else if (lastOperator == ’+’) storedNumber += currentNumber; else if (lastOperator == ’-’) storedNumber -= currentNumber; else if (lastOperator == ’*’) storedNumber *= currentNumber; else if (lastOperator == ’/’) storedNumber /= currentNumber; else if (lastOperator == ’p’) storedNumber *= -1; else if (lastOperator == ’s’) storedNumber = Math.sqrt(currentNumber); else if (lastOperator == ’=’ && equaled) storedNumber = currentNumber; operation.setText("" + storedNumber); operated = true; lastOperator = operator; } // 快捷使用GridBagLayout的方法 private void addComponent(GridBagLayout layout, Component component, int row, int col, int width, int height) { GridBagConstraints constraints = new GridBagConstraints(); constraints.fill = GridBagConstraints.BOTH; constraints.insets = new Insets(10, 2, 10, 2); constraints.weightx = 100; constraints.weighty = 100; constraints.gridx = col; constraints.gridy = row; constraints.gridwidth = width; constraints.gridheight = height; layout.setConstraints(component, constraints); if (component instanceof JButton) ((JButton)component).addActionListener(this); getContentPane().add(component); } // 主方法初始化并显示窗口 public static void main(String args) { Calculator calc = new Calculator(); calc.setSize(290, 400); calc.setVisible(true); } } 如果你想加sin cos tan的话就建它们的按钮 在actionPerformed方法中的if-else语句中加else if (btn == sin){operate(’S’);operate(’=’);equaled = true;}然后在operate方法加对应的语句就行了.记忆M+, M-没时间搞 这个应该比较简单容易明白吧.
用JAVA编写的科学计算器源代码
这个你参考一下。import javax.swing.*; //import javax.swing.event.*; import java.awt.*; import java.awt.event.*; //计算器显示结果的窗体 class Result extends JPanel { JTextField text = new JTextField("0"); //text先是输入和结果 Result() { text.setHorizontalAlignment(SwingConstants.RIGHT); //讲输入的数字或得到的结果在text的右边显示 text.setEnabled(false); //文本框不能 setLayout(new BorderLayout()); //设定布局管理器边框布局 add(text, BorderLayout.CENTER); //text放置在窗体的中间 } } //计算器数字按钮定义面板 class Number_Key extends JPanel { JButton zero = new JButton("0");//数字键0 JButton one = new JButton("1");//数字键1 JButton two = new JButton("2");//数字键2 JButton three = new JButton("3");//数字键3 JButton four = new JButton("4");//数字键4 JButton five = new JButton("5");//数字键5 JButton six = new JButton("6");//数字键6 JButton seven = new JButton("7");//数字键7 JButton eight = new JButton("8");//数字键8 JButton nine = new JButton("9");//数字键9 JButton plus = new JButton("+"); JButton sub = new JButton("-"); JButton mul = new JButton("*"); JButton div = new JButton("/"); JButton equal = new JButton("="); JButton ce = new JButton("ce");//置零键 JButton point = new JButton("."); JButton tzero = new JButton("00"); Number_Key() { setLayout(new GridLayout(6, 3, 10, 10));//定义布局管理器为网格布局 //添加各个按钮键 add(seven); add(eight); add(nine); add(four); add(five); add(six); add(one); add(two); add(three); add(zero); add(tzero); add(plus); add(sub); add(mul); add(div); add(point); add(equal); add(ce); } } //计算器主类 class sakura extends JFrame implements ActionListener { Result result = new Result();//定义text的面板 Number_Key number_key = new Number_Key();//定义按钮面板 //当点击按钮+、-、*、/时,com = true boolean com = false; //当i=0时说明是我们第一次输入,字符串sum不会累加 int i = 0; //存放text的内容 String sum = ""; //存放点击按钮+、-、*、/之前的数值 double total = 0; //+、-、*、/的代号分别为1,2,3,4 int symbol = 0; sakura() { super("Calculator");//设定标题 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设定关闭窗体时退出程序 JPanel pane = new JPanel();//定义主面板 pane.setLayout(new BorderLayout()); pane.add(result, BorderLayout.NORTH); pane.add(number_key, BorderLayout.SOUTH); number_key.one.addActionListener(this);//对1按钮添加监听事件 number_key.two.addActionListener(this);//对2按钮添加监听事件 number_key.three.addActionListener(this);//对3按钮添加监听事件 number_key.four.addActionListener(this);//对4按钮添加监听事件 number_key.five.addActionListener(this);//对5按钮添加监听事件 number_key.six.addActionListener(this);//对6按钮添加监听事件 number_key.seven.addActionListener(this);//对7按钮添加监听事件 number_key.eight.addActionListener(this);//对8按钮添加监听事件 number_key.nine.addActionListener(this);//对9按钮添加监听事件 number_key.zero.addActionListener(this);//对0按钮添加监听事件 number_key.ce.addActionListener(this);//对置零按钮添加监听事件 number_key.plus.addActionListener(this);//对+按钮添加监听事件 number_key.equal.addActionListener(this);//对=按钮添加监听事件 number_key.sub.addActionListener(this);//对-按钮添加监听事件 number_key.mul.addActionListener(this);//对*按钮添加监听事件 number_key.div.addActionListener(this);//对/按钮添加监听事件 number_key.tzero.addActionListener(this);//对00按钮添加监听事件 number_key.point.addActionListener(this);//对.按钮添加监听事件 setContentPane(pane); pack();//初始化窗体大小为正好盛放所有按钮 } //各个按钮触发的事件 public void actionPerformed(ActionEvent e) { /*如果是点击数字按钮那么先要判断是否在此之前点击了+、-、*、/、=,如果是那么com=true * 如果没有com= false;或者是否点击数字键,如果是i = 1,如果没有 i = 0; **/ if (e.getSource() == number_key.one) { if (com || i == 0) { result.text.setText("1"); com = false; i = 1; } else { sum = result.text.getText(); result.text.setText(sum + "1"); } } else if (e.getSource() == number_key.two) { if (com || i == 0) { result.text.setText("2"); com = false; i = 1; } else { sum = result.text.getText(); result.text.setText(sum + "2"); } } else if (e.getSource() == number_key.three) { if (com || i == 0) { result.text.setText("3"); com = false; i = 1; } else { sum = result.text.getText(); result.text.setText(sum + "3"); } } else if (e.getSource() == number_key.four) { if (com || i == 0) { result.text.setText("4"); com = false; i = 1; } else { sum = result.text.getText(); result.text.setText(sum + "4"); } } else if (e.getSource() == number_key.five) { if (com || i == 0) { result.text.setText("5"); com = false; i = 1; } else { sum = result.text.getText(); result.text.setText(sum + "5"); } } else if (e.getSource() == number_key.six) { if (com || i == 0) { result.text.setText("6"); com = false; i = 1; } else { sum = result.text.getText(); result.text.setText(sum + "6"); } } else if (e.getSource() == number_key.seven) { if (com || i == 0) { result.text.setText("7"); com = false; i = 1; } else { sum = result.text.getText(); result.text.setText(sum + "7"); } } else if (e.getSource() == number_key.eight) { if (com || i == 0) { result.text.setText("8"); com = false; i = 1; } else { sum = result.text.getText(); result.text.setText(sum + "8"); } } else if (e.getSource() == number_key.nine) { if (com || i == 0) { result.text.setText("9"); com = false; i = 1; } else { sum = result.text.getText(); result.text.setText(sum + "9"); } } /*对于0这个按钮有一定的说法,在我的程序里不会出现如00000这样的情况,我加了判断条件就是 * 如果text中的数值=0就要判断在这个数值中是否有.存在?如果有那么就在原来数值基础之上添 * 加0;否则保持原来的数值不变 */ else if (e.getSource() == number_key.zero) { if (com || i == 0) { result.text.setText("0"); com = false; i = 1; } else { sum = result.text.getText(); if (Float.parseFloat(sum) 》 0 || Float.parseFloat(sum) 《 0) { result.text.setText(sum + "0"); } else { if (sum.trim().indexOf(".") == -1) { result.text.setText(sum); } else { result.text.setText(sum + "0"); } } } } else if (e.getSource() == number_key.ce) { result.text.setText("0"); i = 0; com = true; } else if (e.getSource() == number_key.tzero) { if (com || i == 0) { result.text.setText("0"); com = false; i = 1; } else { sum = result.text.getText(); if (Float.parseFloat(sum) 》 0 || Float.parseFloat(sum) 《 0) { result.text.setText(sum + "00"); } else { if (sum.trim().indexOf(".") == -1) { result.text.setText(sum); } else { result.text.setText(sum + "00"); } } } } /*本程序不会让一个数值中出现2个以上的小数点.具体做法是:判断是否已经存在.存在就不添加, * 不存在就添加. */ else if (e.getSource() == number_key.point) { if (com || i == 0) { result.text.setText("0."); com = false; i = 1; } else { sum = result.text.getText(); if (sum.trim().indexOf(".") == -1) { result.text.setText(sum + "."); } else { result.text.setText(sum); } } } //获得点击+之前的数值 else if (e.getSource() == number_key.plus) { com = true; i = 0; total = Double.parseDouble(result.text.getText()); symbol = 1; }//获得点击-之前的数值 else if (e.getSource() == number_key.sub) { com = true; i = 0; total = Double.parseDouble(result.text.getText()); symbol = 2; }//获得点击*之前的数值 else if (e.getSource() == number_key.mul) { com = true; i = 0; total = Double.parseDouble(result.text.getText()); System.out.println(total); symbol = 3; }//获得点击/之前的数值 else if (e.getSource() == number_key.div) { com = true; i = 0; total = Double.parseDouble(result.text.getText()); symbol = 4; } else if (e.getSource() == number_key.equal) { switch (symbol) { case 1 ://计算加法 { double ad = total + Double.parseDouble(result.text.getText()); result.text.setText(ad + ""); i = 0; sum = ""; break; } case 2 ://计算减法 { double ad = total - Double.parseDouble(result.text.getText()); result.text.setText(String.valueOf(ad)); i = 0; sum = ""; break; } case 3 ://计算乘法 { double ad = total * Double.parseDouble(result.text.getText()); result.text.setText(ad + ""); i = 0; sum = ""; break; } case 4 ://计算除法 { double ad = total / Double.parseDouble(result.text.getText()); result.text.setText(ad + ""); i = 0; sum = ""; break; } } System.out.println(com); } } public static void main(String args) { sakura ww = new sakura(); ww.setVisible(true) ; } }
求一份JAVA计算器源代码,要有()+-*/和清除键及小数点的,不用科学计算器
import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.SwingUtilities;import javax.swing.UIManager;class CalculatorPanel extends JPanel {private JPanel jp; // 中间的面板private double result; // 计算结果private boolean start; // 用于判断是否是首次输入,true首次,false不是首次private boolean flag; // 用于判断是否清空显示区域的值,true需要,false不需要private String lastCommand; // 用于保存运算符JButton display; // 显示区域public CalculatorPanel() {// 初始化各项值result = 0;start = true;flag = false;lastCommand = "=";// 设置CalculatorPanel这个面板的布局为框架布局setLayout(new BorderLayout());// 这个按钮用来显示值的区域display = new JButton("0.0");display.setEnabled(false);// 按钮样式设置为禁用样式// 用来初始化,清除用的JButton clear = new JButton("clear");clear.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 作初始化的操作result = 0;start = true;flag = false;lastCommand = "=";display.setText("0.0");}});jp = new JPanel();// 将此面板布局设置为网格布局,4行4列jp.setLayout(new GridLayout(4, 4));// 实例化监听器对象NumberAction na = new NumberAction();CommandAction ca = new CommandAction();makeButton("7", na);makeButton("8", na);makeButton("9", na);makeButton("/", ca);makeButton("4", na);makeButton("5", na);makeButton("6", na);makeButton("*", ca);makeButton("1", na);makeButton("2", na);makeButton("3", na);makeButton("-", ca);makeButton("0", na);makeButton(".", na);makeButton("+", ca);makeButton("=", ca);// 将面板,两个按键加入到我的面板,实现计算器的界面add(display, BorderLayout.NORTH);add(jp, BorderLayout.CENTER);add(clear, BorderLayout.SOUTH);}private void makeButton(String buttonName, ActionListener al) {JButton jb = new JButton(buttonName);jp.add(jb);jb.addActionListener(al);}// 数字监听器private class NumberAction implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {JButton jb = (JButton) e.getSource(); // 获取事件源对象String input = jb.getText(); // 获取事件源对象上的标签if (start) { // 首次输入// 一上就".",就什么也不做if (input.equals(".")) {return;}// 如果是"0.0"的话,就清空if (display.getText().equals("0.0")) {display.setText("");}start = false;// 改变是否首次输入的标记值} else {// 判断显示区域的值里面是否已经有".",如果有,输入的又是".",就什么都不做if (display.getText().indexOf(".") != -1) {if (input.equals(".")) {return;}}// 判断显示区域的值里面只有"-",输入的又是".",就什么都不做if (display.getText().equals("-")) {if (input.equals(".")) {return;}}// 判断显示区域的值如果是"0",输入的不是".",就什么也不做if (display.getText().equals("0")) {if (!input.equals(".")) {return;}}}// 如果我点击了运算符以后,再输入数字的话,就要清空显示区域的值if (flag) {display.setText("");flag = false;// 还原初始值,不需要清空}display.setText(display.getText() + input);// 设置显示区域的值}}// 运算符监听器private class CommandAction implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {JButton jb = (JButton) e.getSource(); // 获取事件源对象String inputCommand = jb.getText(); // 获取事件源对象上的标签if (start) {// 首次输入// 一上就是"-"if (inputCommand.equals("-")) {display.setText("-");// 显示区域的内容设置为"-"start = false;// 改变首次输入的标记}} else {if (!flag) {// 如果flag=false不需要清空显示区的值,就调用方法计算calculate(Double.parseDouble(display.getText()));// 保存显示区域的值,并计算}// 保存你点击的运算符lastCommand = inputCommand;flag = true;// 因为我这里已经输入过运算符,}}}// 计算用的方法private void calculate(double x) {if (lastCommand.equals("+")) {result += x;} else if (lastCommand.equals("-")) {result -= x;} else if (lastCommand.equals("*")) {result *= x;} else if (lastCommand.equals("/")) {result /= x;} else if (lastCommand.equals("=")) {result = x;}display.setText("" + result);}}class MyFrameUitl {public static void init(JFrame jFrame, Dimension frameSize, String title,String iconFileName, boolean resizable) {Toolkit tk = Toolkit.getDefaultToolkit(); // 系统工具包,可以读取系统信息Dimension screenSize = tk.getScreenSize();// 获取屏幕大小// 获取宽高int screenWidth = screenSize.width;int screenHeight = screenSize.height;// 找中心点int centerX = screenWidth / 2;int centerY = screenHeight / 2;// 解析窗体大小int frameWidth = frameSize.width;int frameHeight = frameSize.height;// 设置窗体位置jFrame.setBounds(centerX - frameWidth / 2, centerY - frameHeight / 2,frameWidth, frameHeight);jFrame.setTitle(title);// 设置标题if (iconFileName != null) {jFrame.setIconImage(tk.getImage(iconFileName));// 设置图标}// 设置皮肤com.sun.java.swing.plaf.windows.WindowsLookAndFeel/**/try {UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");SwingUtilities.updateComponentTreeUI(jFrame);} catch (Exception e1) {e1.printStackTrace();}jFrame.setResizable(resizable);// 设置窗体是否可以改变大小jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置程序关闭动作jFrame.setVisible(true);// 显示窗体}}class CalculatorFrame extends JFrame {public CalculatorFrame() {add(new CalculatorPanel());MyFrameUitl.init(this, new Dimension(400, 300), "简易计算器", null,false);this.pack();// 让组件按原始大小显示,并且窗体的大小刚好能够容纳所有的组件}}public class CalculatorTest {public static void main(String args) {new CalculatorFrame();}}
运行结果:
计算器java代码
import java.awt.Color;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.WindowConstants;import javax.swing.border.LineBorder;class Normal{ double i,j; public Normal(double num1,double num2){ i=num1; j=num2; } public double puls(){ return i+j; } public double subtract(){ return i-j; } public double multiply(){ return i*j; } public double divide(){ return i/j; } public double surpuls(){ return i%j; }}class scientific extends Normal{ public scientific(int num1, int num2) { super(num1, num2); }}public class calc extends JFrame{ public static void main(String args) { viewNormal VN= new viewNormal("normal"); }}class viewNormal extends JFrame implements ActionListener{ JPanel jp1 = new JPanel(new GridLayout(4,3,5,5)); JPanel jp2 = new JPanel(new GridLayout(5,1,5,5)); JLabel jl; JButton jb; JButton jbs,jbo,jba,jbb,jbc,jby; StringBuffer sb = new StringBuffer(); Normal normal; int dot=0; double fnum=0; double lnum=0; double result; String sign=null; public viewNormal(String title){ setTitle(title); setLayout(null); setVisible(true); setBounds(200,200,305,350); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); jb= new JButton; for(int i=0;i《9;i++){ jb=new JButton(""+(i+1)); jp1.add(jb); jb.addActionListener(this); } jb=new JButton("."); jb=new JButton("0"); jb=new JButton("="); jb.addActionListener(this); jb.addActionListener(this); jb.addActionListener(this); jp1.add(jb); jp1.add(jb); jp1.add(jb); jp1.setBounds(10, 100, 200, 200); jbs= new JButton("+");jbo= new JButton("-");jba= new JButton("*"); jbb= new JButton("/");jby= new JButton("%");jbc= new JButton("C"); jbs.addActionListener(this);jbo.addActionListener(this);jba.addActionListener(this); jbb.addActionListener(this);jby.addActionListener(this);jbc.addActionListener(this); //jp2.add(jby); jp2.add(jbs);jp2.add(jbo);jp2.add(jba);jp2.add(jbb);jp2.add(jbc); jp2.setBounds(215, 100, 70, 200); jl= new JLabel("0",JLabel.RIGHT); jl.setFont(new Font("Batang",Font.BOLD, 20)); jl.setBorder(new LineBorder(Color.black,2)); jl.setBackground(Color.white); jl.setBounds(10, 40, 275, 50); jl.setOpaque(true); add(jl); add(jp1); add(jp2); } //+ public void sum(){ lnum=Double.parseDouble(sb.toString()); normal=new Normal(fnum,lnum); fnum=normal.puls(); result=fnum; } //- private void sub() { System.out.println(sb.toString()); lnum=Double.parseDouble(sb.toString()); normal=new Normal(fnum,lnum); fnum=normal.subtract(); result=fnum; } //* private void mul() { lnum=Double.parseDouble(sb.toString()); normal=new Normal(fnum,lnum); fnum=normal.multiply(); result=fnum; } // / private void div() { lnum=Double.parseDouble(sb.toString()); normal=new Normal(fnum,lnum); fnum=normal.divide(); result=fnum; } //% private void sur() { lnum=Double.parseDouble(sb.toString()); normal=new Normal(fnum,lnum); fnum=normal.surpuls(); result=fnum; } // = private void same(){ if(sign.equals("+")){ sum(); } if(sign.equals("-")){ sub(); } if(sign.equals("*")){ mul(); } if(sign.equals("/")){ div(); } if(sign.equals("%")){ sur(); } } //result public void Result(){ if(result%1!=0) jl.setText(""+result); else { int i=(int)result; jl.setText(""+i); } } @Override public void actionPerformed(ActionEvent e) { //System.out.println(sb.toString()); // 1~9 for(int i=0;i《9;i++){ if(e.getSource()==jb&&!sb.toString().equals("0")){ sb.append(jb.getText()); jl.setText(sb.toString()); } else if(e.getSource()==jb&&sb.toString().equals("0")){ int d=sb.length(); sb.delete(0, d); sb.append(jb.getText()); jl.setText(sb.toString()); } } // 0 if(e.getSource()==jb&&!sb.toString().equals("0")){ sb.append(jb.getText()); jl.setText(sb.toString()); } // . if(e.getSource()==jb&˙==0&&!sb.toString().equals("")){ dot++; sb.append(jb.getText()); jl.setText(sb.toString()); } // = if(e.getSource()==jb&&!sb.toString().equals("")){ same(); Result(); int d=sb.length(); sb.delete(0, d); dot=0; } // + if(e.getSource()==jbs&&!sb.toString().equals("")){ if(sign!="+"&&sign!=null) same(); else sum(); sign ="+"; Result(); int d=sb.length(); sb.delete(0, d); dot=0; } //- if(e.getSource()==jbo&&!sb.toString().equals("")){ if(fnum==0) fnum=2*Double.parseDouble(sb.toString()); if(sign!="-"&&sign!=null) same(); else sub(); sign ="-"; Result(); int d=sb.length(); sb.delete(0, d); dot=0; } //* if(e.getSource()==jba&&!sb.toString().equals("")){ if(fnum==0) fnum=1; if(sign!="*"&&sign!=null) same(); else mul(); sign ="*"; Result(); int d=sb.length(); sb.delete(0, d); dot=0; } // / if(e.getSource()==jbb&&!sb.toString().equals("")){ if(fnum==0) fnum=Math.pow(Double.parseDouble(sb.toString()),2); if(sign!="/"&&sign!=null) same(); else div(); sign ="/"; Result(); int d=sb.length(); sb.delete(0, d); dot=0; } //%// if(e.getSource()==jby&&!sb.toString().equals("")){// if(fnum==0){// fnum=Double.parseDouble(sb.toString());// result=fnum;// }// else { // if(sign!="%"&&sign!=null)// same();// else{// lnum=Double.parseDouble(sb.toString());// normal=new Normal(fnum,lnum);// fnum=normal.surpuls();// result=fnum;// }// }// sign ="%";// Result();// int d=sb.length();// sb.delete(0, d);// dot=0;// } //clear if(e.getSource()==jbc){ int d=sb.length(); sb.delete(0, d); jl.setText("0"); dot=0; fnum=0; lnum=0; sign=null; } }}class viewScientific extends viewNormal{ public viewScientific(String title){ super(title); setBounds(200,200,800,500); }}//等号以后输入符号用不了, String转 double 本来就有错误,你可以用我的扩展成科学型的。
要用java编的计算器代码
给你一个比较简单的吧。以前写的。 共两个类。还只是完成+、-、×、÷运算而已。 GUI只是用了AWT,很简单,相信一看就能懂了。 Calculator.java public class Calculator{ private String result = "0"; private int op = 0,add = 1,sub = 2,mul = 3,div = 4; private double stringToDouble(String x){ double y = Double.parseDouble(x); return y; } private void operate(String x){ double x1 = stringToDouble(x); double y = stringToDouble(result); switch (op){ case 0: result = x; break; case 1: result = String.valueOf(y+x1); break; case 2: result = String.valueOf(y-x1); break; case 3: result = String.valueOf(y*x1); break; case 4: if(x1!=0){ result = String.valueOf(y/x1); }else{ result = "The divisor can’t be zero!"; } break; } } public String opAdd(String x){ operate(x); op = add; return result; } public String opSubtract(String x){ operate(x); op = sub; return result; } public String opMultiply(String x){ operate(x); op = mul; return result; } public String opDivide(String x){ operate(x); op = div; return result; } public String opEquals(String x){ operate(x); op = 0; return result; } public void opClean(){ op = 0; result = "0"; } }CalculatorGUI.java import java.awt.*; import java.awt.event.*; import java.util.EventObject; public class CalculatorGUI{ private Frame f; private Panel p1,p2; private Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9; private Button bPoint,bAdd,bDec,bMul,bDiv,bCal; private TextField tf; private String s,op; private Calculator cal = new Calculator(); private boolean ifOp; public CalculatorGUI(){ f = new Frame("Calculator"); p1 = new Panel(); p2 = new Panel(); b0 = new Button("0"); b1 = new Button("1"); b2 = new Button("2"); b3 = new Button("3"); b4 = new Button("4"); b5 = new Button("5"); b6 = new Button("6"); b7 = new Button("7"); b8 = new Button("8"); b9 = new Button("9"); bPoint = new Button("."); bAdd = new Button("+"); bDec = new Button("-"); bMul = new Button("*"); bDiv = new Button("/"); bCal = new Button("="); tf = new TextField(25); tf.setEditable(false); } public void launchFrame(){ f.setSize(220,160); f.setResizable(false); f.addWindowListener(new myWindowListener()); p1.setLayout(new FlowLayout(FlowLayout.CENTER)); p1.add(tf); f.add(p1,BorderLayout.NORTH); p2.setLayout(new GridLayout(4,4)); b0.addActionListener(new setLabelText_ActionListener()); b1.addActionListener(new setLabelText_ActionListener()); b2.addActionListener(new setLabelText_ActionListener()); b3.addActionListener(new setLabelText_ActionListener()); b4.addActionListener(new setLabelText_ActionListener()); b5.addActionListener(new setLabelText_ActionListener()); b6.addActionListener(new setLabelText_ActionListener()); b7.addActionListener(new setLabelText_ActionListener()); b8.addActionListener(new setLabelText_ActionListener()); b9.addActionListener(new setLabelText_ActionListener()); bPoint.addActionListener(new setLabelText_ActionListener()); bAdd.addActionListener(new setOperator_ActionListener()); bDec.addActionListener(new setOperator_ActionListener()); bMul.addActionListener(new setOperator_ActionListener()); bDiv.addActionListener(new setOperator_ActionListener()); bCal.addActionListener(new setOperator_ActionListener()); p2.add(b7); p2.add(b8); p2.add(b9); p2.add(bAdd); p2.add(b4); p2.add(b5); p2.add(b6); p2.add(bDec); p2.add(b1); p2.add(b2); p2.add(b3); p2.add(bMul); p2.add(b0); p2.add(bPoint); p2.add(bCal); p2.add(bDiv); f.add(p2,BorderLayout.SOUTH); f.setVisible(true); } public void setTextFieldText_Temp(){ if (tf.getText().length()《15 && (tf.getText().indexOf(".")==-1 || !s.equals("."))){ tf.setText(tf.getText()+s); }else{ tf.setText((tf.getText()+s).substring(0,15)); } } public void setTextFieldText(){ if(ifOp){ ifOp = false; tf.setText(""); setTextFieldText_Temp(); }else{ setTextFieldText_Temp(); } } public static void main(String args){ CalculatorGUI calculator = new CalculatorGUI(); calculator.launchFrame(); } class myWindowListener extends WindowAdapter{ public void windowClosing(WindowEvent e){ System.exit(0); } } class setLabelText_ActionListener implements ActionListener{ public void actionPerformed(ActionEvent e){ Button tempB = (Button)e.getSource(); s = tempB.getLabel(); setTextFieldText(); } } class setOperator_ActionListener implements ActionListener{ public void actionPerformed(ActionEvent e){ Button tempB = (Button)e.getSource(); op = tempB.getLabel(); if(op.equals("+")){ tf.setText(cal.opAdd(tf.getText())); ifOp = true; }else if(op.equals("-")){ tf.setText(cal.opSubtract(tf.getText())); ifOp = true; }else if(op.equals("*")){ tf.setText(cal.opMultiply(tf.getText())); ifOp = true; }else if(op.equals("/")){ tf.setText(cal.opDivide(tf.getText())); ifOp = true; }else if(op.equals("=")){ tf.setText(cal.opEquals(tf.getText())); ifOp = true; } } } }
求一计算器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都是运算数 int z;//Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/" static double m;//记忆的数字 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); //实例化所有按钮、设置其前景色并注册监听器 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(); //创建一个空字符串缓冲区 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); } //构造监听器 class Bt implements ActionListener { public void actionPerformed(ActionEvent e2) { try{ if(e2.getSource()==b1)//选择"CE"清零 { tf1.setText("0");//把显示屏清零 str.setLength(0);//清空字符串缓冲区以准备接收新的输入运算数 } else if(e2.getSource()==b2)//选择"C"清零 { tf1.setText("0");//把显示屏清零 str.setLength(0); } else if(e2.getSource()==b23)//单击"+/-"选择输入的运算数是正数还是负数 { 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);//清空缓冲区以便接收新的另一个运算数 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)//单击"."按钮输入小数 { if(tf1.getText().trim().indexOf(′.′)!=-1)//判断字符串中是否已经包含了小数点 { } else//如果没数点有小 { 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("数字格式异常"); if(x《0) tf1.setText("负数没有平方根"); 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("除数不能为零"); } 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为重新调用存储的数据 { if(tf2.getText().trim()!="")//有记忆数字 { tf1.setText(""+m); } } else if(e2.getSource()==b5)//MS为存储显示的数据 { m=Double.parseDouble(tf1.getText().trim()); tf2.setText("M"); tf1.setText("0"); str.setLength(0); } else if(e2.getSource()==b6)//M+为将显示的数字与已经存储的数据相加要查看新的数字单击MR { m=m+Double.parseDouble(tf1.getText().trim()); } else//选择的是其他的按钮 { if(e2.getSource()==b22)//如果选择的是"0"这个数字键 { 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//其他的数字键 { tf1.setText(str.append(e2.getActionCommand()).toString()); y=Double.parseDouble(tf1.getText().trim()); } } } catch(NumberFormatException e){ tf1.setText("数字格式异常"); } catch(StringIndexOutOfBoundsException e){ tf1.setText("字符串索引越界"); } } } public static void main(String args) { new Counter(); } }
java 计算器代码
这个是最合适你了!import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends JFrame { private Container container; private GridBagLayout layout; private GridBagConstraints constraints; private JTextField displayField;//计算结果显示区 private String lastCommand;//保存+,-,*,/,=命令 private double result;//保存计算结果 private boolean start;//判断是否为数字的开始 public Calculator() { super("计算器"); container=getContentPane(); layout=new GridBagLayout(); container.setLayout(layout); constraints=new GridBagConstraints(); start=true; result=0; lastCommand = "="; displayField=new JTextField(20); displayField.setText("0.0");displayField.setcolor(red);displayField.setHorizontalAlignment(JTextField.RIGHT); constraints.gridx=0; constraints.gridy=0; constraints.gridwidth=4; constraints.gridheight=1; constraints.fill=GridBagConstraints.BOTH; constraints.weightx=100; constraints.weighty=100; layout.setConstraints(displayField,constraints); container.add(displayField); ActionListener insert = new InsertAction(); ActionListener command = new CommandAction(); addButton("7",0,2,1,1,insert); addButton("8",1,2,1,1,insert); addButton("9",2,2,1,1,insert); addButton("/",3,5,1,1,command); addButton("4",0,3,1,1,insert); addButton("5",1,3,1,1,insert); addButton("6",2,3,1,1,insert); addButton("*",3,4,1,1,command); addButton("1",0,4,1,1,insert); addButton("2",1,4,1,1,insert); addButton("3",2,4,1,1,insert); addButton("-",3,3,1,1,command); addButton("0",1,5,1,1,insert); addButton("=",2,5,1,1,command); addButton(".",0,5,1,1,insert); addButton("+",3,2,1,1,command); setSize(180,200); setVisible(true); } private void addButton(String label,int row,int column,int with,int height,ActionListener listener) { JButton button=new JButton(label); constraints.gridx=row; constraints.gridy=column; constraints.gridwidth=with; constraints.gridheight=height; constraints.fill=GridBagConstraints.BOTH; button.addActionListener(listener); layout.setConstraints(button,constraints); container.add(button); } private class InsertAction implements ActionListener { public void actionPerformed(ActionEvent event) { String input=event.getActionCommand(); if (start) { displayField.setText(""); start=false; displayField.setText(displayField.getText()+input); } } } private class CommandAction implements ActionListener { public void actionPerformed(ActionEvent evt) { String command=evt.getActionCommand(); if(start) { lastCommand=command; }else { calculate(Double.parseDouble(displayField.getText())); lastCommand=command; start=true; } } } public void calculate(double x) { if (lastCommand.equals("+")) result+= x; else if (lastCommand.equals("-")) result-=x; else if (lastCommand.equals("*")) result*=x; else if (lastCommand.equals("/")) result/=x; else if (lastCommand.equals("=")) result=x; displayField.setText(""+ result); } public static void main(String args) { Calculator calculator=new Calculator(); calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
速求java编程:计算器能在科学型与标准型之间切换的源代码
import java.awt.*;import java.awt.event.*;import javax.swing.*;/**********************Java计算器 主类*********************/public class Calculator implements ActionListener { JFrame f; JMenu mEdit; JMenu mView; JMenu mHelp; JMenuItem mCopy; JMenuItem mPaste; JTextField tResult; JButton bNumber; JButton bOperator; JButton bOther; JButton bM; boolean isDouble=false;//是否为实数 int opFlag=-1; static double t1=0,t2=0,t3=0,result=0; static int opflag1=-1,opflag2=-1,flag=0,resflag=1; int preOp,currentOp=0;//标准位 double op1=0,op2=0;//操作数 double n3; StringBuffer buf=new StringBuffer(20); StringBuffer copyBoard=new StringBuffer(20);//剪贴板 StringBuffer memory=new StringBuffer(20);//M系列 StringBuffer str=new StringBuffer(); //Java计算器 构造器 public Calculator() { f = new JFrame("计算器_刘亚会"); Container contentPane = f.getContentPane(); /**************************Java计算器 菜单的创建*****************************/ JMenuBar mBar = new JMenuBar(); mBar.setOpaque(true); mEdit = new JMenu("(E)"); mEdit.setMnemonic(KeyEvent.VK_E); mCopy = new JMenuItem("复制(C)"); mEdit.add(mCopy); mPaste = new JMenuItem("粘贴(P)"); mEdit.add(mPaste); mView = new JMenu("查看(V)"); mView.setMnemonic(KeyEvent.VK_V); mView.add(new JMenuItem("标准型")); mView.add(new JMenuItem("科学型")); mView.addSeparator(); mView.add(new JMenuItem("查看分组")); mHelp = new JMenu("帮助(H)"); mHelp.setMnemonic(KeyEvent.VK_H); mHelp.add(new JMenuItem("帮助主题")); mHelp.addSeparator(); mHelp.add(new JMenuItem("关于计算器")); mBar.add(mEdit); mBar.add(mView); mBar.add(mHelp); f.setJMenuBar(mBar); contentPane.setLayout(new BorderLayout()); JPanel pTop = new JPanel(); tResult = new JTextField("0.",26); tResult.setHorizontalAlignment(JTextField.RIGHT); tResult.setEditable(false); pTop.add(tResult); contentPane.add(pTop,BorderLayout.NORTH); JPanel pBottom = new JPanel(); pBottom.setLayout(new BorderLayout()); JPanel pLeft = new JPanel(); pLeft.setLayout(new GridLayout(5,1,3,3)); bM = new JButton(" "); bM.setEnabled(false); pLeft.add(bM); /*************************Java计算器 功能键定义***************************/ bOther = new JButton("MC"); bOther.addActionListener(this); bOther.setForeground(Color.red); bOther.setMargin(new Insets(3,2,3,2)); pLeft.add(bOther); bOther = new JButton("MR"); bOther.addActionListener(this); bOther.setForeground(Color.red); bOther.setMargin(new Insets(3,2,3,2)); pLeft.add(bOther); bOther = new JButton("MS"); bOther.addActionListener(this); bOther.setForeground(Color.red); bOther.setMargin(new Insets(3,2,3,2)); pLeft.add(bOther); bOther = new JButton("M+"); bOther.addActionListener(this); bOther.setForeground(Color.red); bOther.setMargin(new Insets(3,2,3,2)); pLeft.add(bOther); pBottom.add(pLeft,BorderLayout.WEST); JPanel pRight = new JPanel(); pRight.setLayout(new BorderLayout()); JPanel pUp = new JPanel(); pUp.setLayout(new GridLayout(1,3,3,0)); bOther = new JButton("BackSpace"); bOther.addActionListener(this); bOther.setForeground(Color.red); bOther.setMargin(new Insets(3,0,3,5)); pUp.add(bOther); bOther = new JButton("CE"); bOther.addActionListener(this); bOther.setForeground(Color.red); pUp.add(bOther); bOther = new JButton("C"); bOther.addActionListener(this); bOther.setForeground(Color.red); pUp.add(bOther); /***************************Java计算器 数字键盘区定义**************************/ JPanel pDown = new JPanel(); pDown.setLayout(new GridLayout(4,5,3,2)); bNumber = new JButton("7"); bNumber.setForeground(Color.blue); bNumber.addActionListener(this); bNumber.setMargin(new Insets(3,3,3,3)); pDown.add(bNumber); bNumber = new JButton("8"); bNumber.setForeground(Color.blue); bNumber.addActionListener(this); bNumber.setMargin(new Insets(3,3,3,3)); pDown.add(bNumber); bNumber = new JButton("9"); bNumber.setForeground(Color.blue); bNumber.addActionListener(this); bNumber.setMargin(new Insets(3,3,3,3)); pDown.add(bNumber); bOperator = new JButton("/"); bOperator.setForeground(Color.red); bOperator.addActionListener(this); bOperator.setMargin(new Insets(3,0,3,0)); pDown.add(bOperator); bOperator = new JButton("sqrt"); bOperator.addActionListener(this); bOperator.setForeground(Color.red); bOperator.setMargin(new Insets(3,0,3,0)); pDown.add(bOperator); bNumber = new JButton("4"); bNumber.setForeground(Color.blue); bNumber.addActionListener(this); bNumber.setMargin(new Insets(3,3,3,3)); bNumber.setHorizontalTextPosition(JButton.LEFT); pDown.add(bNumber); bNumber = new JButton("5"); bNumber.setForeground(Color.blue); bNumber.addActionListener(this); bNumber.setMargin(new Insets(3,3,3,3)); pDown.add(bNumber); bNumber = new JButton("6"); bNumber.setForeground(Color.blue); bNumber.addActionListener(this); bNumber.setMargin(new Insets(3,3,3,3)); pDown.add(bNumber); bOperator = new JButton("*"); bOperator.setForeground(Color.red); bOperator.addActionListener(this); bOperator.setMargin(new Insets(3,3,3,3)); pDown.add(bOperator); bOperator = new JButton("%"); bOperator.setForeground(Color.blue); bOperator.addActionListener(this); bOperator.setMargin(new Insets(3,3,3,3)); pDown.add(bOperator); bNumber = new JButton("1"); bNumber.setForeground(Color.blue); bNumber.addActionListener(this); bNumber.setMargin(new Insets(3,3,3,3)); pDown.add(bNumber); bNumber = new JButton("2"); bNumber.setForeground(Color.blue); bNumber.addActionListener(this); bNumber.setMargin(new Insets(3,3,3,3)); pDown.add(bNumber); bNumber = new JButton("3"); bNumber.setForeground(Color.blue); bNumber.addActionListener(this); bNumber.setMargin(new Insets(3,3,3,3)); pDown.add(bNumber); bOperator = new JButton("-"); bOperator.setForeground(Color.red); bOperator.addActionListener(this); bOperator.setMargin(new Insets(3,3,3,3)); pDown.add(bOperator); bOperator = new JButton("1/x"); bOperator.setForeground(Color.blue); bOperator.addActionListener(this); pDown.add(bOperator); bNumber = new JButton("0"); bNumber.setForeground(Color.blue); bNumber.addActionListener(this); bNumber.setMargin(new Insets(3,3,3,3)); pDown.add(bNumber); bOperator = new JButton("+/-"); bOperator.setForeground(Color.blue); bOperator.addActionListener(this); bOperator.setMargin(new Insets(3,3,3,3)); pDown.add(bOperator); bOperator = new JButton("."); bOperator.setForeground(Color.blue); bOperator.addActionListener(this); bOperator.setMargin(new Insets(3,3,3,3)); pDown.add(bOperator); bOperator = new JButton("+"); bOperator.setForeground(Color.blue); bOperator.addActionListener(this); bOperator.setMargin(new Insets(3,3,3,3)); pDown.add(bOperator); bOperator = new JButton("="); bOperator.setForeground(Color.blue); bOperator.addActionListener(this); bOperator.setMargin(new Insets(3,3,3,3)); pDown.add(bOperator); pRight.add(pUp,BorderLayout.NORTH); pRight.add(pDown,BorderLayout.SOUTH); pBottom.add(pRight,BorderLayout.EAST); contentPane.add(pBottom,BorderLayout.SOUTH); f.setSize(new Dimension(320,256)); f.setResizable(false); f.setVisible(true); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); } /************************Java计算器 计算方法区***************************/ public void actionPerformed(ActionEvent e) { String s = e.getActionCommand(); if(s.equals("复制(C)")) { String temp = tResult.getText().trim(); copyBoard.replace(0, copyBoard.length(), temp); mPaste.setEnabled(true); } else if(s.equals("粘贴(p)")) { tResult.setText(copyBoard.toString()); } else if(s.equals("CE")) { //如果是CE则清除文本框 tResult.setText("0."); } else if(s.equals("BackSpace")) { if(!tResult.getText().trim().equals("0.")) { //如果文本框中有内容 if(str.length()!=1 && str.length()!=0) { tResult.setText(str.delete(str.length()-1,str.length()).toString()); } else { tResult.setText("0."); str.setLength(0); } } op2 = Double.parseDouble(tResult.getText().trim()); } else if(s.equals("C")) { //如果是C删除当前计算 tResult.setText("0."); op1 = op2 = 0; str.replace(0, str.length(), " "); preOp = currentOp = 0; } else if(s.equals("MC")) { //如果是MC则清除缓冲区 String temp = ""; memory.replace(0, memory.length(), temp); bM.setText(" "); } else if(s.equals("MR")) { //如果按键为MR则恢复缓冲区的数到文本框 tResult.setText(memory.toString()); } else if(s.equals("MS")) { //如果按键为MS则将文本框的数存入缓冲区 String s1 = tResult.getText().trim(); memory.replace(0, memory.length(), s1); bM.setText("M"); } else if(s.equals("M+")) { //如果按键为MS则将文本框值与缓冲区的数相加但不显示结果 String temp1 = tResult.getText().trim(); double dtemp = Double.parseDouble(temp1); String temp2 = memory.toString(); dtemp += Double.parseDouble(temp2); temp1 = String.valueOf(dtemp); memory.replace(0, memory.length(), temp1); } else if(s.equals("1/x")) { //如果按键为1/x则将文本框中的数据为它的倒数 String temp = tResult.getText().trim(); double dtemp = Double.parseDouble(temp); tResult.setText(""+1/dtemp); } else if(s.equals("sqrt")) { //如果按键为sqrt则将文本框中的内容求平方根 String temp = tResult.getText().trim(); double dtemp = Double.parseDouble(temp); tResult.setText(""+Math.sqrt(dtemp)); } else if(s.equals("+")) { str.setLength(0); if(currentOp==0) { preOp = currentOp = 1; op2 = 0; tResult.setText(""+op1); } else { currentOp = preOp; preOp = 1; switch(currentOp){ case 1: op1 += op2; tResult.setText(""+op1); break; case 2: op1 -= op2; tResult.setText(""+op1); break; case 3: op1 *= op2; tResult.setText(""+op1); break; case 4: op1 /= op2; tResult.setText(""+op1); break; } } } else if(s.equals("-")){ str.setLength(0); if(currentOp==0) { preOp=currentOp=2;//op1=op2;op2=0; tResult.setText(""+op1); } else { currentOp =preOp; preOp =2; switch(currentOp){ case 1:op1=op1+op2;tResult.setText(""+op1);break; case 2:op1=op1-op2;tResult.setText(""+op1);break; case 3:op1=op1*op2;tResult.setText(""+op1);break; case 4:op1=op1/op2;tResult.setText(""+op1);break; } } } else if(s.equals("*"))//* { str.setLength(0); if(currentOp==0) { preOp=currentOp=3;//op1=op2;op2=1; tResult.setText(""+op1);//op1=op2; } else { currentOp =preOp; preOp =3; switch(currentOp){ case 1:op1=op1+op2;tResult.setText(""+op1);break; case 2:op1=op1-op2;tResult.setText(""+op1);break; case 3:op1=op1*op2;tResult.setText(""+op1);break; case 4:op1=op1/op2;tResult.setText(""+op1);break; } } } else if(s.equals("/"))// / { str.setLength(0); if(currentOp==0) { preOp=currentOp=4;//op2=1; tResult.setText(""+op1);//op1=op2; } else { currentOp =preOp; preOp =4; switch(currentOp){ case 1:op1=op1+op2;tResult.setText(""+op1);break; case 2:op1=op1-op2;tResult.setText(""+op1);break; case 3:op1=op1*op2;tResult.setText(""+op1);break; case 4:op1=op1/op2;tResult.setText(""+op1);break; } } } else if(s.equals("="))// = { if(currentOp==0) { str.setLength(0); tResult.setText(""+op2); } else { str.setLength(0); currentOp =preOp; switch(currentOp){ case 1:op1=op1+op2;tResult.setText(""+op1);break; case 2:op1=op1-op2;tResult.setText(""+op1);break; case 3:op1=op1*op2;tResult.setText(""+op1);break; case 4:op1=op1/op2;tResult.setText(""+op1);break; } currentOp=0; op2=0; } } else if(s.equals(".")) { isDouble=true; if(tResult.getText().trim().indexOf(’.’)!=-1); else { if(tResult.getText().trim().equals("0")) { str.setLength(0); tResult.setText((str.append("0"+s)).toString()); } //else if(tResult.getText().trim().equals("")){}//如果初时显示为空则不做任何操作 else { tResult.setText((str.append(s)).toString()); } } } else if(s.equals("0"))//如果选择的是"0"这个数字键 { if(tResult.getText().trim().equals("0.")){} else{ tResult.setText(str.append(s).toString()); op2=Double.parseDouble(tResult.getText().trim()); } } else{ tResult.setText(str.append(s).toString()); op2=Double.parseDouble(tResult.getText().trim()); if(currentOp==0) op1=op2; } }//end actionPerformed public static void main(String args) { new Calculator(); }}这个就是了,看看功能是否一样
求大神发个完整简单的java计算器代码,
public static void main(String args) { System.out.println("简单计算器"); boolean flag=true;//while循环是否继续,true继续循环,false停止循环 System.out.println("请输入第一个数字"); while(flag){ Scanner scan = new Scanner(System.in); String bh=scan.next(); try { double num = Double.parseDouble(bh); System.out.println("请输入符号(+、-、*、/)"); while(1==1){ String fh=scan.next(); if("+".equals(fh) || "-".equals(fh) || "*".equals(fh) || "/".equals(fh)){ System.out.println("请输入第二个数字"); while(1==1){ String bh3=scan.next(); try { double num2 = Double.parseDouble(bh3); double num3=0; if("+".equals(fh)){ num3=num+num2; }else if("-".equals(fh)){ num3=num-num2; }else if("*".equals(fh)){ num3=num*num2; }else if("/".equals(fh)){ num3=num/num2; } System.out.println(num3); break; } catch (Exception e) { System.out.println("请输入第二个正确的数字"); continue; } } break; }else{ System.out.println("请输入正确的符号(+、-、*、/)"); continue; } } System.out.println("是否继续运算:输入Y或者y继续,输入其它任意字符退出"); String yn=scan.next(); if("Y".equals(yn) || "y".equals(yn)){ continue; }else{ System.out.println("运算结束"); break; } }catch (NumberFormatException e) {//输入非数字类型时 System.out.println("请输入第一个正确的数字"); continue; } } }
java 计算器 源代码 后边计算部分
简单的实现了下import java.awt.*;import java.awt.event.*;public class jisuanqi extends Frame implements ActionListener {Button b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15,b16;TextField t1;Label l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15;@SuppressWarnings("serial")public static void main(String args)// 程序入口{Frame f = new Frame("计算器");Panel P = new Panel();P.setLayout(new GridLayout(4, 4, 1, 1));P.setSize(200, 200);// 创建本窗体对象new jisuanqi() ;}jisuanqi()// 构造方法{super("四则运算");setBounds(100, 100, 300, 200);setVisible(true);b1 = new Button("+");b2 = new Button("-");b3 = new Button("*");b4 = new Button("/");b5 = new Button("1");b6 = new Button("2");b7 = new Button("3");b8 = new Button("4");b9 = new Button("5");b10 = new Button("6");b11 = new Button("7");b12 = new Button("8");b13 = new Button("9");b14 = new Button("0");b15 = new Button(".");b16 = new Button("=");b1.setActionCommand("+");b2.setActionCommand("-");b3.setActionCommand("*");b4.setActionCommand("/");b5.setActionCommand("1");b6.setActionCommand("2");b7.setActionCommand("3");b8.setActionCommand("4");b9.setActionCommand("5");b10.setActionCommand("6");b11.setActionCommand("7");b12.setActionCommand("8");b13.setActionCommand("9");b14.setActionCommand("0");b15.setActionCommand(".");b16.setActionCommand("=");t1 = new TextField(15);setLayout(new FlowLayout());// 更改窗体框架的布局add(t1);add(b1);add(b2);add(b3);add(b4);add(b5);add(b6);add(b7);add(b8);add(b9);add(b10);add(b11);add(b12);add(b13);add(b14);add(b15);add(b16);setVisible(true);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);b10.addActionListener(this);b11.addActionListener(this);b12.addActionListener(this);b13.addActionListener(this);b14.addActionListener(this);b15.addActionListener(this);b16.addActionListener(this);}// 构造方法结束//计算部分在这实现double n1 = 0;double n2 = 0;double res = 0;char xx = ’+’;boolean c = false;@Overridepublic void actionPerformed(ActionEvent e) {char x = e.getActionCommand().toCharArray();switch(x){case ’+’:case ’-’:case ’*’:case ’/’:xx = x;n1 = Double.parseDouble(t1.getText());t1.setText("");break;case ’=’:n2 = Double.parseDouble(t1.getText());switch(xx){case ’+’:res = n1+n2;break;case ’-’:res = n1-n2;break;case ’*’:res = n1*n2;break;case ’/’:res = n1/n2;break;}t1.setText(res+"");c = true;break;default:if(c){c = false;t1.setText("");}t1.setText(t1.getText()+e.getActionCommand());}}}
更多文章:
三星c27t550fdc(T550三星平板出故障屏幕打不开充电无反应开关机无反应)
2023年12月11日 03:10
三星a82最新消息(三星笔记本q460sj09摄像头驱动到那下)
2024年6月30日 23:12
荣耀6plus系统升级(华为荣耀6 plus 系统怎么升级)
2024年8月12日 04:00
步步高家教机如何随便上网(请问步步高学习机连接网络怎么连接)
2024年5月29日 05:56
oppoa59s二手值多少钱(你好 一部oppoa59s想卖掉最多值多少钱)
2024年6月10日 22:59
诺基亚c7是不是侧滑(刚买的诺基亚C7,本来有侧滑解锁的震动,不知为什么失灵了,不震动了,请问有没有高手知道是怎么回事)
2024年3月25日 15:30
三星note3刷机包miui下载(哪里有三星note3 SM-N9006的官方原版ROM)
2024年5月6日 13:26
360手机助手下载的文件在哪(在电脑的360手机助手传到手机上的视频 在哪个文件夹)
2023年10月6日 23:15