java实现加减乘除(求简单java写计算器代码加减乘除)
本文目录
- 求简单java写计算器代码加减乘除
- Java实现有界面的简单的两个整数之间的加减乘除运算
- java简单加减乘除
- 用Java编写实现加减乘除,界面如下
- java如何实现3个 个位数的加减乘除运算
- 用java怎样编写加减乘除,从键盘输入,例如:1+2按回车之后可以运算,小数整数都可以
- java加减乘除计算器界面编程
- java中,用布局器实现计算器界面 并实现加减乘除等功能,怎样编程
- 如何利用Java中的BigDecimal实现加减乘除功能
求简单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) { 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); } }
Java实现有界面的简单的两个整数之间的加减乘除运算
这个必须通过swing技术实现,先看下效果图:
import java.awt.BorderLayout;import java.awt.Color;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.SwingConstants;public class Jisuanqi extends JFrame implements ActionListener {/** * */private static final long serialVersionUID = 1L;Result result = new Result(); // 定义text的面板Number_Key number_key = new Number_Key(); // 定义按钮面板// 当点击按钮+、-、*、/时,com = trueboolean com = false;// 当i=0时说明是我们第一次输入,字符串text不会累加int i = 0;// 存放text的内容String text = ““;// 存放点击按钮+、-、*、/之前的数值double defbutton = 0;// +、-、*、/的代号分别为1,2,3,4int symbol = 0;// 构造函数Jisuanqi() {super(“WangJiao“); // 设定标题setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设定关闭窗体时退出程序JPanel pane = new JPanel(); // 定义主面板pane.setLayout(new BorderLayout());setBounds(380, 220, 30, 80); // 前两个参数是在屏幕上显示的坐标,后两个是大小// 替换图标ImageIcon icon = new ImageIcon(“F:1.GIF“);// Jisuanqi.class.getResource(“APPLE.GIF“)// );setIconImage(icon.getImage());pane.add(result, BorderLayout.NORTH);pane.add(number_key, BorderLayout.CENTER);pane.add(number_key.equal, 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.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 {text = result.text.getText();result.text.setText(text + “1“);}} else if (e.getSource() == number_key.two) {if (com || i == 0) {result.text.setText(“2“);com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + “2“);}} else if (e.getSource() == number_key.three) {if (com || i == 0) {result.text.setText(“3“);com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + “3“);}} else if (e.getSource() == number_key.four) {if (com || i == 0) {result.text.setText(“4“);com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + “4“);}} else if (e.getSource() == number_key.five) {if (com || i == 0) {result.text.setText(“5“);com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + “5“);}} else if (e.getSource() == number_key.six) {if (com || i == 0) {result.text.setText(“6“);com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + “6“);}} else if (e.getSource() == number_key.seven) {if (com || i == 0) {result.text.setText(“7“);com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + “7“);}} else if (e.getSource() == number_key.eight) {if (com || i == 0) {result.text.setText(“8“);com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + “8“);}} else if (e.getSource() == number_key.nine) {if (com || i == 0) {result.text.setText(“9“);com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + “9“);}}/* * 对于0这个按钮有一定的说法,在我的程序里不会出现如00000这样的情况,我加了判断条件就是 * 如果text中的数值=0就要判断在这个数值中是否有.存在?如果有那么就在原来数值基础之上添 加0;否则保持原来的数值不变 */else if (e.getSource() == number_key.zero) { // result.text.getText()是得到text里内容的意思if (com || i == 0) {result.text.setText(“0“);com = false;i = 1;} else {text = result.text.getText();if (Float.parseFloat(text) 》 0 || Float.parseFloat(text) 《 0) { // Float.parseFloat(text)就是类型转换了,下面都是一样result.text.setText(text + “0“);} else {if (text.trim().indexOf(“.“) == -1) {result.text.setText(text);} else {result.text.setText(text + “0“);}}}} else if (e.getSource() == number_key.ce) {result.text.setText(“0“);i = 0;com = true;// text = ““;defbutton = 0;}/* * 本程序不会让一个数值中出现2个以上的小数点.具体做法是:判断是否已经存在.存在就不添加, 不存在就添加. */else if (e.getSource() == number_key.point) {if (com || i == 0) {result.text.setText(“0.“);com = false;i = 1;} else {text = result.text.getText();if (text.trim().indexOf(“.“) == -1) {result.text.setText(text + “.“);} else {result.text.setText(text);}}} // 获得点击+之前的数值else if (e.getSource() == number_key.plus) {com = true;i = 0;defbutton = Double.parseDouble(result.text.getText());symbol = 1;} // 获得点击-之前的数值else if (e.getSource() == number_key.sub) {com = true;i = 0;defbutton = Double.parseDouble(result.text.getText());symbol = 2;} // 获得点击*之前的数值else if (e.getSource() == number_key.mul) {com = true;i = 0;defbutton = Double.parseDouble(result.text.getText());System.out.println(defbutton);symbol = 3;} // 获得点击/之前的数值else if (e.getSource() == number_key.div) {com = true;i = 0;defbutton = Double.parseDouble(result.text.getText());symbol = 4;} else if (e.getSource() == number_key.equal) {switch (symbol) {case 1: { // 计算加法double ad = defbutton+ Double.parseDouble(result.text.getText());result.text.setText(ad + ““);i = 0;text = ““;break;}case 2: { // 计算减法double ad = defbutton- Double.parseDouble(result.text.getText());result.text.setText(String.valueOf(ad));i = 0;text = ““;break;}case 3: { // 计算乘法double ad = defbutton* Double.parseDouble(result.text.getText());result.text.setText(ad + ““);i = 0;text = ““;break;}case 4: { // 计算除法double ad = defbutton/ Double.parseDouble(result.text.getText());result.text.setText(ad + ““);i = 0;text = ““;break;}}System.out.println(com);}System.out.println(result.text.getText());}@SuppressWarnings(“deprecation“)public static void main(String args) {Jisuanqi loveyou = new Jisuanqi();loveyou.show();}}// 计算器数字按钮定义面板class Number_Key extends JPanel {/** * */private static final long serialVersionUID = 1L;JButton zero = new JButton(“0“); // 数字键0JButton one = new JButton(“1“); // 数字键1JButton two = new JButton(“2“); // 数字键2JButton three = new JButton(“3“); // 数字键3JButton four = new JButton(“4“); // 数字键4JButton five = new JButton(“5“); // 数字键5JButton six = new JButton(“6“); // 数字键6JButton seven = new JButton(“7“); // 数字键7JButton eight = new JButton(“8“); // 数字键8JButton nine = new JButton(“9“); // 数字键9JButton plus = new JButton(“+“);JButton sub = new JButton(“-“);JButton mul = new JButton(“*“);JButton div = new JButton(“/“);JButton equal = new JButton(“=“);JButton ce = new JButton(“清零“); // 置零键JButton point = new JButton(“.“);Number_Key() {setLayout(new GridLayout(4, 4, 1, 1)); // 定义布局管理器为网格布局setBackground(Color.blue); // 设置背景颜色// 添加按钮add(one);add(two);add(three);add(four);add(five);add(six);add(seven);add(eight);add(nine);add(zero);add(plus);add(sub);add(mul);add(div);add(point);add(equal);add(ce);}}// 计算器显示结果的窗体class Result extends JPanel {/** * */private static final long serialVersionUID = 1L;// text先是输入和结果JTextField text = new JTextField(“0“);@SuppressWarnings(“deprecation“)Result() { // 讲输入的数字或得到的结果在text的右边显示text.setHorizontalAlignment(SwingConstants.RIGHT);text.enable(false); // 文本框不能setLayout(new BorderLayout()); // 设定布局管理器边框布局add(text, BorderLayout.CENTER); // text放置在窗体的中间}}java简单加减乘除
使用BigDecimal并且一定要用String来够造。实现方法如下: import java.math.BigDecimal;/*** 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精* 确的浮点数运算,包括加减乘除和四舍五入。*/public class Arith{//默认除法运算精度private static final int DEF_DIV_SCALE = 10;//这个类不能实例化private Arith(){}/*** 提供精确的加法运算。* @param v1 被加数* @param v2 加数* @return 两个参数的和*/public static double add(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.add(b2).doubleValue();}/*** 提供精确的减法运算。* @param v1 被减数* @param v2 减数* @return 两个参数的差*/public static double sub(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.subtract(b2).doubleValue();}/*** 提供精确的乘法运算。* @param v1 被乘数* @param v2 乘数* @return 两个参数的积*/public static double mul(double v1,double v2){BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.multiply(b2).doubleValue();}/*** 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到* 小数点以后10位,以后的数字四舍五入。* @param v1 被除数* @param v2 除数* @return 两个参数的商*/public static double div(double v1,double v2){return div(v1,v2,DEF_DIV_SCALE);}/*** 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指* 定精度,以后的数字四舍五入。* @param v1 被除数* @param v2 除数* @param scale 表示表示需要精确到小数点以后几位。* @return 两个参数的商*/public static double div(double v1,double v2,int scale){if(scale《0){throw new IllegalArgumentException(“The scale must be a positive integer or zero“);}BigDecimal b1 = new BigDecimal(Double.toString(v1));BigDecimal b2 = new BigDecimal(Double.toString(v2));return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();}/*** 提供精确的小数位四舍五入处理。* @param v 需要四舍五入的数字* @param scale 小数点后保留几位* @return 四舍五入后的结果*/public static double round(double v,int scale){if(scale《0){throw new IllegalArgumentException(“The scale must be a positive integer or zero“);}BigDecimal b = new BigDecimal(Double.toString(v));BigDecimal one = new BigDecimal(“1“);return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();}}; 分享 本回答由电脑网络分类达人 高德宝认证 其他类似问题 2009-02-08加减乘除运算(Java)14 2010-06-22Java实现有界面的简单的两个整数之间的加减乘除运算 2009-09-21myeclipse中java的加减乘除运算1 2011-05-27用java编写计算器,,,要求加减乘除等运算。。。1 2011-09-15java中的String型怎么实现数学的加减乘除运算?10 更多关于java简单加减乘除的问题》》 为您推荐: 举报| 2009-02-24 03:00 #为什么很多走失的孩子无法找回?# 提问者采纳 import java.util.Scanner;class MakeOperation { public static void main(String args){ Scanner input=new Scanner(System.in); Count count=new Count(); System.out.print(“请输入你要运算的第一个数:“); count.one=input.next(); System.out.print(“请输入你要进行运算的运算符:“); count.fu=input.next(); System.out.print(“请输入你要运算的第二个数:“); count.two=input.next(); if(count.fu.equals(“+“)){ count.outcome=Float.parseFloat(count.one)+Float.parseFloat(count.two)+““; // 将字符串解析为数字,注意下如果输入的不是数字程序会报错,缺少健壮性代码 } System.out.println(count); } } class Count{ String one; String two; String fu; String outcome; // 结果 public String toString(){ return one+fu+two+“=“+outcome; } } 下面的代码修改了Count类里域的部分参数,增加了一个用于检查输入是否正确的类。 import java.util.Scanner; class MakeOperation { public static void main(String args){ Scanner input=new Scanner(System.in); Count count=new Count(); CheckOperation checkOpera=new CheckOperation(); System.out.print(“请输入你要运算的第一个数:“); count.one=checkOpera.checkNum(input); System.out.print(“请输入你要进行运算的运算符:“); String operators={“+“,“-“,“*“,“/“}; count.fu=checkOpera.checkOperator(input,operators); System.out.print(“请输入你要运算的第二个数:“); count.two=checkOpera.checkNum(input); if(“+“.equals(count.fu)){ count.outcome=count.one+count.two; System.out.println(count); } } } class Count{ float one; float two; String fu; float outcome; // 结果 public String toString(){ return one+fu+two+“=“+outcome; } } class CheckOperation{ /*验证数字,输错了会提示用户重新输入*/ public float checkNum(Scanner input){ float num=0f; try { num=Float.parseFloat(input.next()); } catch (NumberFormatException e) { System.out.print(“请输入正确的数字: “); num=checkNum(input); //直至获取到正确的值 } return num; } /*验证输入的符号是否正确*/ public String checkOperator(Scanner input,String operators){ String opera=null; boolean judge=true; opera=input.next(); for(String operator:operators){ if(operator.equals(opera)) judge=false; } if(judge) { System.out.print(“请输入正确的运算符: “); opera=checkOperator(input,operators); } return opera; } }
用Java编写实现加减乘除,界面如下
用Java编写的实现加减乘除的程序如下
import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;public class Calculator extends JFrame implements ActionListener{ JLabel jl1=new JLabel(“第一个数“); JLabel jl2=new JLabel(“运算符“); JLabel jl3=new JLabel(“第二个数“); JLabel jl4=new JLabel(“结果:“); JTextField jtf1=new JTextField(8); JTextField jtf2=new JTextField(8); JTextField jtf3=new JTextField(8); String a={“+“,“-“,“*“,“/“}; JComboBox《String》 jcb=new JComboBox《String》(a); JButton jb1=new JButton(“计算“); JButton jb2=new JButton(“退出“); JPanel jp=new JPanel(); Calculator(){ setTitle(“计算器“); jb1.addActionListener(this); jb2.addActionListener(this); jp.setLayout(null); jl1.setBounds(30, 30, 80, 20); jl2.setBounds(110, 30, 80, 20); jl3.setBounds(190, 30, 80, 20); jtf1.setBounds(30, 60, 70, 20); jcb.setBounds(110, 60, 70,20); jtf2.setBounds(190, 60, 70, 20); jl4.setBounds(80, 110, 40, 20); jtf3.setBounds(110, 110, 100, 20); jb1.setBounds(60, 160, 60, 25); jb2.setBounds(170, 160, 60, 25); jp.add(jl1);jp.add(jl2);jp.add(jl3); jp.add(jtf1);jp.add(jcb);jp.add(jtf2); jp.add(jl4);jp.add(jtf3); jp.add(jb1);jp.add(jb2); add(jp,BorderLayout.CENTER); setSize(300, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } public static void main(String args) { new Calculator(); } @Override public void actionPerformed(ActionEvent ae) { if(ae.getSource()==jb1){ String c=((String) jcb.getSelectedItem()).trim(); if(jtf1.getText().trim().equals(““)){ JOptionPane.showMessageDialog(this, “第一个数不能为空“); jtf1.requestFocus(); return; } if(jtf2.getText().trim().equals(““)){ JOptionPane.showMessageDialog(this, “第二个数不能为空“); jtf2.requestFocus(); return; } double num1=Double.parseDouble(jtf1.getText().trim()); double num2=Double.parseDouble(jtf2.getText().trim()); double num3 = 0; switch(c){ case “+“:num3=num1+num2;break; case “-“:num3=num1-num2;break; case “*“:num3=num1*num2;break; case “/“: if(num2==0){ JOptionPane.showMessageDialog(this, “除数不能为0“); jtf2.requestFocus(); return; }else{ num3=num1/num2; break; } } jtf3.setText(String.valueOf(num3)); } if(ae.getSource()==jb2){ System.exit(0); } }}运行结果
java如何实现3个 个位数的加减乘除运算
public class ParamDemo { public static void main(String args) { Map《String, Integer》 map = new HashMap《》(); map.put(“+“, 1); map.put(“-“, 1); map.put(“*“, 2); map.put(“/“, 2); Scanner scanner = new Scanner(System.in); int num1 = scanner.nextInt(); int num2 = scanner.nextInt(); int num3 = scanner.nextInt(); String op1 = scanner.next(); String op2 = scanner.next(); //此时证明第一个操作符优先级大于第二个操作符 if (map.get(op1) - map.get(op2) 》= 0) { int tmpNumber = operateNum(op1, num1, num2); System.out.println(operateNum(op2, tmpNumber, num3)); } else { int tmpNumber = operateNum(op2, num2, num3); System.out.println(operateNum(op1, num1, tmpNumber)); } scanner.close(); } private static int operateNum(String operator, int num1, int num2) { switch (operator) { case “+“: return num1 + num2; case “-“: return num1 - num2; case “*“: return num1 * num2; case “/“: return num1 / num2; default: return 0; } }}
用java怎样编写加减乘除,从键盘输入,例如:1+2按回车之后可以运算,小数整数都可以
public static void main(String args){ Scanner sc=new Scanner(System.in); System.out.println(“请输入第一个数:“); double n1 = sc.nextDouble(); System.out.println(“请输入运算符:“); String s = sc.next(); System.out.println(“请输入第二个数:“); double n2 = sc.nextDouble(); if(s.equals(“+“)){ System.out.print(n1+“+“+n2+“ = “+(n1+n2)); }else if(s.equals(“-“)){ System.out.print(n1+“+“+n2+“ = “+(n1-n2)); }else if(s.equals(“*“)){ System.out.print(n1+“*“+n2+“ = “+(n1*n2)); }else if(s.equals(“/“)){ if(n2==0){ System.out.println(“除数不能等于0“); }else{ System.out.print(n1+“/“+n2+“ = “+(n1/n2)); } }else{ System.out.println(“运算符输入错误,请重新输入。“); }}
java加减乘除计算器界面编程
以前学习的时候写过,听那些在工作岗位上的人说JFrame框架在企业中基本不用,所以也就没怎么深入研究了,你要的话我可以给你,能完善一下最好,完善不了的话就以后再说吧package test;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Z extends JFrame implements ActionListener, FocusListener { private String total = { “1“, “2“, “3“, “+“, “4“, “5“, “6“, “-“, “7“, “8“, “9“, “*“, “0“, “.“, “=“, “/“ }; // 总数组 private String other = { “clear“, “delete“ }; // 其它功能数组 private String symbol = { “+“, “-“, “*“, “/“ }; // 符号数组 private String multinumber = “0“, operator1 = ““, exists = ““, operator2 = null, s = ““; // multinumber(多位数) operator1(运算符) exists(存在的) private double d1, d2 = 0; private int Count = 0; JPanel jptotal = new JPanel(); // 总面板 JTextField jtexternal = new JTextField(“0“); // 外部文本框 JTextField jtinside = new JTextField(); // 内部文本框 JPanel jptop1 = new JPanel(); // 顶部面板1 JPanel jptop2 = new JPanel(); // 顶部面板2 JPanel jpmiddle = new JPanel(); // 中部面板 public Z() { jptotal.setLayout(new BorderLayout()); // 使用边界布局管理器 jptop1.setLayout(new GridLayout(2, 0)); jptop1.add(jtexternal); jptop2.setLayout(new GridLayout(0, 2)); for (int i = 0; i 《 other.length; i++) { JButton jbi = new JButton(““ + other 得出最终结果 jtexternal.setText(““ + d1); Count = 0; s = “=“; multinumber = “0“; if (operator2.equals(“0“) && “/“.equals(operator1)) { operator2 = null; d1 = 0;// 将非法运算值替换成正确值 throw new ArithmeticException();// 指定抛出异常的条件//赋值计算不抛算数异常,如果想让其抛出,必须指定条件重新抛出异常 } else { operator1 = inputing; operator2 = null; d2 = 0; } // 计算结果 if (inputing.equals(“=“) && (d1 == 0.0 || d2 == 0.0)) { return; } // 实现等号不可重复输入 } } catch (ArithmeticException e1) { jtexternal.setText(“除数不能为0“); // 指定抛出异常内容 } } public static void main(String args) { new Z(); } public void focusGained(FocusEvent e) { jtinside.requestFocus(); // 让焦点聚焦到内部文本框,实现外部文本框的不可聚焦功能 } public void focusLost(FocusEvent e) { }}/* * 目前delete删除输入值之后让其它值还原功能未实现,等以后再进行改进 举个例子:比如我要计算1+1,但是在输入等号的时候,我想换成别的 * 比如我想换成1-1,我按delete将1和加号删除,换成1-1 但是结果却不是0 又或者我换成11+1,但是结果却不是12 * 又或者当我输入11时,我不小心多输入了一个数字,这时候再进行运算,结果就不是我想要的了 ... */
java中,用布局器实现计算器界面 并实现加减乘除等功能,怎样编程
java写的,可行package ex1;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.text.DecimalFormat;import javax.swing.BorderFactory;import javax.swing.ButtonGroup;import javax.swing.JButton;import javax.swing.JCheckBoxMenuItem;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JRadioButtonMenuItem;import javax.swing.JTextField;public class Calcutor extends JFrame {private JTextField tf;private JPanel panel1, panel2, panel3, panel4;private JMenuBar myBar;private JMenu menu1, menu2, menu3;private JMenuItem editItem1, editItem2, help1, help2, help3;private JRadioButtonMenuItem seeItem1, seeItem2;//单选框private JCheckBoxMenuItem seeItem3;//复选框private ButtonGroup bgb;private String back;private boolean IfResult = true, flag = false;private String oper = “=“;private double result = 0;private Num numActionListener;private DecimalFormat df;public Calcutor(){super(“科学计算器“);//设置标题栏df = new DecimalFormat(“#.####“);//保留四位小数this.setLayout(new BorderLayout(10, 5));panel1 = new JPanel(new GridLayout(1, 3, 10, 10));panel2 = new JPanel(new GridLayout(5, 6, 5, 5));//5行6列panel3 = new JPanel(new GridLayout(5, 1, 5, 5));panel4 = new JPanel(new BorderLayout(5, 5));/*** 菜单栏*/myBar = new JMenuBar();menu1 = new JMenu(“(E)“);menu2 = new JMenu(“查看(V)“);menu3 = new JMenu(“帮助(H)“);menu1.setFont(new Font(“宋体“, Font.PLAIN, 12));menu2.setFont(new Font(“宋体“, Font.PLAIN, 12));menu3.setFont(new Font(“宋体“, Font.PLAIN, 12));/*** 栏*/editItem1 = new JMenuItem(“复制(C) Ctrl+C“);editItem2 = new JMenuItem(“粘贴(P) Ctrl+V“);editItem1.setFont(new Font(“宋体“,Font.PLAIN,12));editItem2.setFont(new Font(“宋体“,Font.PLAIN,12));/*** 查看栏*/seeItem1 = new JRadioButtonMenuItem(“科学型(T)“);seeItem2 = new JRadioButtonMenuItem(“标准型(S)“);seeItem3 = new JCheckBoxMenuItem(“数字分组(I)“);seeItem1.setFont(new Font(“宋体“,Font.PLAIN,12));seeItem2.setFont(new Font(“宋体“,Font.PLAIN,12));seeItem3.setFont(new Font(“宋体“,Font.PLAIN,12));/*** 帮助栏*/help1 = new JMenuItem(“帮助主题(H)“);help2 = new JMenuItem(“关于计算器(A)“);help1.setFont(new Font(“宋体“,Font.PLAIN,12));help2.setFont(new Font(“宋体“,Font.PLAIN,12));bgb = new ButtonGroup();//选项组menu1.add(editItem1);menu1.add(editItem2);menu2.add(seeItem1);menu2.add(seeItem2);menu2.addSeparator();//添加一条分割线menu2.add(seeItem3);menu3.add(help1);menu3.addSeparator();//添加一条分割线menu3.add(help2);myBar.add(menu1);myBar.add(menu2);myBar.add(menu3);this.setJMenuBar(myBar);numActionListener = new Num();//实现数字监听/*** 文本域,即为计算器的屏幕显示区域*/tf = new JTextField();tf.setEditable(false);//文本区域不可tf.setBackground(Color.white);//文本区域的背景色tf.setHorizontalAlignment(JTextField.RIGHT);//文字右对齐tf.setText(“0“);tf.setBorder(BorderFactory.createLoweredBevelBorder());init();//对计算器进行初始化}/*** 初始化操作* 添加按钮*/private void init(){addButton(panel1, “Backspace“, new Clear(), Color.red);addButton(panel1, “CE“, new Clear(), Color.red);addButton(panel1, “C“, new Clear(), Color.red);addButton(panel2, “1/x“, new Signs(), Color.magenta);addButton(panel2, “log“, new Signs(), Color.magenta);addButton(panel2, “7“, numActionListener, Color.blue);addButton(panel2, “8“, numActionListener, Color.blue);addButton(panel2, “9“, numActionListener, Color.blue);addButton(panel2, “÷“, new Signs(), Color.red);addButton(panel2, “n!“, new Signs(), Color.magenta);addButton(panel2, “sqrt“, new Signs(), Color.magenta);addButton(panel2, “4“, numActionListener, Color.blue);addButton(panel2, “5“, numActionListener, Color.blue);addButton(panel2, “6“, numActionListener, Color.blue);addButton(panel2, “ד, new Signs(), Color.red);addButton(panel2, “sin“, new Signs(), Color.magenta);addButton(panel2, “x^2“, new Signs(), Color.magenta);addButton(panel2, “1“, numActionListener, Color.blue);addButton(panel2, “2“, numActionListener, Color.blue);addButton(panel2, “3“, numActionListener, Color.blue);addButton(panel2, “-“, new Signs(), Color.red);addButton(panel2, “cos“, new Signs(), Color.magenta);addButton(panel2, “x^3“, new Signs(), Color.magenta);addButton(panel2, “0“, numActionListener, Color.blue);addButton(panel2, “-/+“, new Clear(), Color.blue);addButton(panel2, “.“, new Dot(), Color.blue);addButton(panel2, “+“, new Signs(), Color.red);addButton(panel2, “tan“, new Signs(), Color.magenta);addButton(panel2, “%“, new Signs(), Color.magenta);addButton(panel2, “π“, numActionListener, Color.orange);addButton(panel2, “e“, numActionListener, Color.orange);addButton(panel2, “′″“, new Signs(), Color.orange);addButton(panel2, “=“, new Signs(), Color.red);JButton btns = new JButton(“计算器“);btns.setBorder(BorderFactory.createLoweredBevelBorder());btns.setEnabled(false);//按钮不可操作btns.setPreferredSize(new Dimension(20, 20));panel3.add(btns);//加入按钮addButton(panel3, “MC“, null, Color.red);addButton(panel3, “MR“, null, Color.red);addButton(panel3, “MS“, null, Color.red);addButton(panel3, “M+“, null, Color.red);panel4.add(panel1, BorderLayout.NORTH);panel4.add(panel2, BorderLayout.CENTER);this.add(tf, BorderLayout.NORTH);this.add(panel3, BorderLayout.WEST);this.add(panel4);pack();this.setResizable(false);//窗口不可改变大小this.setLocation(300, 200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}/*** 统一设置按钮的的使用方式* @param panel* @param name* @param action* @param color*/private void addButton(JPanel panel, String name, ActionListener action, Color color){JButton bt = new JButton(name);panel.add(bt);//在面板上增加按钮bt.setForeground(color);//设置前景(字体)颜色bt.addActionListener(action);//增加监听事件}/*** 计算器的基础操作(+ - × ÷)* @param x*/private void getResult (double x){if(oper == “+“){result += x;}else if(oper == “-“){result -= x;}else if(oper == “ד){result *= x;}else if(oper == “÷“){result /= x;}else if(oper == “=“){result = x;}tf.setText(df.format(result));}/*** 运算符号的事件监听*/class Signs implements ActionListener{public void actionPerformed(ActionEvent e) {/** 用ActionEvent对象的getActionCommand()方法* 取得与引发事件对象相关的字符串*/String str = e.getActionCommand();/* sqrt求平方根 */if(str.equals(“sqrt“)){double i = Double.parseDouble(tf.getText());if(i》=0){/** String.valueOf() 转换为字符串* df.format() 按要求保留四位小数* Math.sqrt() 求算数平方根*/tf.setText(String.valueOf(df.format(Math.sqrt(i))));}else{tf.setText(“负数不能开平方根“);}}/* log求常用对数 */else if(str.equals(“log“)){double i = Double.parseDouble(tf.getText());if(i》0){tf.setText(String.valueOf(df.format(Math.log(i))));}else{tf.setText(“负数不能求对数“);}}/* %求百分比 */else if(str.equals(“%“)){tf.setText(df.format(Double.parseDouble(tf.getText()) / 100));}/* 1/x求倒数 */else if(str.equals(“1/x“)){if(Double.parseDouble(tf.getText()) == 0){tf.setText(“除数不能为零“);}else{tf.setText(df.format(1 / Double.parseDouble(tf.getText())));}}/* sin求正弦函数 */else if(str.equals(“sin“)){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.sin(i))));}/* cos求余弦函数 */else if(str.equals(“cos“)){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.cos(i))));}/* tan求正切函数 */else if(str.equals(“tan“)){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(Math.tan(i))));}/* n!求阶乘 */else if(str.equals(“n!“)){double i = Double.parseDouble(tf.getText());if((i%2==0)||(i%2==1))//判断为整数放进行阶乘操作{int j = (int)i;//强制类型转换int result=1;for(int k=1;k《=j;k++)result *= k;tf.setText(String.valueOf(result));}else{tf.setText(“无法进行阶乘“);}}/* x^2求平方 */else if(str.equals(“x^2“)){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(i*i)));}/* x^3求立方 */else if(str.equals(“x^3“)){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(df.format(i*i*i)));}/* ′″角度转换 *//*** 将角度值转换成弧度值,方便三角函数的计算*/else if(str.equals(“′″“)){double i = Double.parseDouble(tf.getText());tf.setText(String.valueOf(i/180*Math.PI));}else{if(flag){IfResult = false;}if(IfResult){oper = str;}else{getResult(Double.parseDouble(tf.getText()));oper = str;IfResult = true;}}}}/*** 清除按钮的事件监听*/class Clear implements ActionListener{public void actionPerformed(ActionEvent e) {/** 用ActionEvent对象的getActionCommand()方法* 取得与引发事件对象相关的字符串*/String str = e.getActionCommand();if(str == “C“){tf.setText(“0“);IfResult = true;result = 0;}else if(str == “-/+“){double i = 0 - Double.parseDouble(tf.getText().trim());tf.setText(df.format(i));}else if(str == “Backspace“){if(Double.parseDouble(tf.getText()) 》 0){if(tf.getText().length() 》 1){tf.setText(tf.getText().substring(0, tf.getText().length() - 1));//使用退格删除最后一位字符}else{tf.setText(“0“);IfResult = true;}}else{if(tf.getText().length() 》 2){tf.setText(tf.getText().substring(0, tf.getText().length() - 1));}else{tf.setText(“0“);IfResult = true;}}}else if(str == “CE“){tf.setText(“0“);IfResult = true;}}}/*** 数字输入的事件监听*/class Num implements ActionListener{public void actionPerformed(ActionEvent e) {String str = e.getActionCommand();if(IfResult){tf.setText(““);IfResult = false;}if(str==“π“){tf.setText(String.valueOf(Math.PI));}else if(str==“e“){tf.setText(String.valueOf(Math.E));}else{tf.setText(tf.getText().trim() + str);if(tf.getText().equals(“0“)){tf.setText(“0“);IfResult = true;flag = true;}}}}/*** 小数点的事件监听*/class Dot implements ActionListener{public void actionPerformed(ActionEvent e) {IfResult = false;if(tf.getText().trim().indexOf(“.“) == -1){tf.setText(tf.getText() + “.“);}}}/*** main方法*/public static void main(String args) {new Calcutor().setVisible(true);}}
如何利用Java中的BigDecimal实现加减乘除功能
仅做参考:
import java.math.BigDecimal; /** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 * 确的浮点数运算,包括加减乘除和四舍五入。 */ public class Arith{ //默认除法运算精度 private static final int DEF_DIV_SCALE = 10; //这个类不能实例化 private Arith(){ } /** * 提供精确的加法运算。 * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ public static double add(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.add(b2).doubleValue(); } /** * 提供精确的减法运算。 * @param v1 被减数 * @param v2 减数 * @return 两个参数的差 */ public static double sub(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.subtract(b2).doubleValue(); } /** * 提供精确的乘法运算。 * @param v1 被乘数 * @param v2 乘数 * @return 两个参数的积 */ public static double mul(double v1,double v2){ BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.multiply(b2).doubleValue(); } /** * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 * 小数点以后10位,以后的数字四舍五入。 * @param v1 被除数 * @param v2 除数 * @return 两个参数的商 */ public static double div(double v1,double v2){ return div(v1,v2,DEF_DIV_SCALE); } /** * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 * 定精度,以后的数字四舍五入。 * @param v1 被除数 * @param v2 除数 * @param scale 表示表示需要精确到小数点以后几位。 * @return 两个参数的商 */ public static double div(double v1,double v2,int scale){ if(scale《0){ throw new IllegalArgumentException( “The scale must be a positive integer or zero“); } BigDecimal b1 = new BigDecimal(Double.toString(v1)); BigDecimal b2 = new BigDecimal(Double.toString(v2)); return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理。 * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */ public static double round(double v,int scale){ if(scale《0){ throw new IllegalArgumentException(“The scale must be a positive integer or zero“); } BigDecimal b = new BigDecimal(Double.toString(v)); BigDecimal one = new BigDecimal(“1“); return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); } };更多文章:

flash动画网(有没有在制作flash动画方面比较有经验的)
2025年3月6日 16:10

win10ssh(win10自带的服务openssh如何设置开机自动启动)
2025年2月24日 04:30

模式匹配符中的%,_什么作用?为什么诸多编程语言都将模式匹配作为重要构成
2025年3月29日 12:20

inline函数用法(matlab inline 函数的用法)
2025年3月17日 14:40

oracle下载安装包(如何在官方网站下载ORACLE的安装包)
2025年4月5日 04:50

struggle to do sth(struggle的用法是否有struggle to 的用法)
2025年2月26日 06:10

talented的中文(英语I am courageous and I am talented怎么翻译)
2025年4月9日 05:50

loadimage(一开机就出现loadimage failed)
2025年4月15日 13:40

php mysql 连接池(php做的网站 连接mysql数据库 效率问题)
2025年2月20日 13:20

the service is unavailable(the service is unavailable.是什么意思)
2025年3月4日 00:30

mod函数是什么意思(在EXCEL中“MOD函数”的用法是什么)
2025年2月26日 12:30

面向对象模型的特点(什么是面向对象过程模型,有什么优点和缺点)
2025年3月31日 11:50