java实现加减乘除(求简单java写计算器代码加减乘除)

2025-03-27 06:30:02 0

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) { 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();   }   };

java实现加减乘除(求简单java写计算器代码加减乘除)

本文编辑:admin

更多文章:


工作流java(谁知道java工作流是什么东西)

工作流java(谁知道java工作流是什么东西)

本文目录谁知道java工作流是什么东西JAVA开发中工作流是什么概念、本人很模糊、求教java中的工作流到底是什么东西谁知道java工作流是什么东西工作流是业务流程的全部或部分自动化,在此过程中,文档、信息或任务按照一定的过程规则流转,实现

2025年2月26日 10:00

flash动画网(有没有在制作flash动画方面比较有经验的)

flash动画网(有没有在制作flash动画方面比较有经验的)

本文目录有没有在制作flash动画方面比较有经验的如何判断MG动画与flash动画有没有在制作flash动画方面比较有经验的中国宣传片制作网,国内优质宣传片制作公司权威展示平台,现在很多动画片制作公司都已经入驻了的,你可以上去看看有没有自己

2025年3月6日 16:10

win10ssh(win10自带的服务openssh如何设置开机自动启动)

win10ssh(win10自带的服务openssh如何设置开机自动启动)

本文目录win10自带的服务openssh如何设置开机自动启动win10家庭版能使用ssh吗,用win自带ssh连不上ubuntu,ping也ping不通win10自带的服务openssh如何设置开机自动启动你可以尝试在cmd下多输入一条命

2025年2月24日 04:30

sweetener(sweetener和suger的区别)

sweetener(sweetener和suger的区别)

本文目录sweetener和suger的区别sugar-free sweetenersweetener和suger的区别sweetener 名词 增甜剂 甜头的意思 楼主sugar写错了哦 是sugar 不是suger sugar是糖的意思

2025年4月15日 09:50

模式匹配符中的%,_什么作用?为什么诸多编程语言都将模式匹配作为重要构成

模式匹配符中的%,_什么作用?为什么诸多编程语言都将模式匹配作为重要构成

本文目录模式匹配符中的%,_什么作用为什么诸多编程语言都将模式匹配作为重要构成在Word编辑中,模式匹配查找中能使用的通配符是模式匹配的概念什么是半导体泵浦固体激光器中的光谱匹配和模式匹配字符串的模式匹配算法串的模式匹配是什么英雄联盟几级才

2025年3月29日 12:20

cvs便利店(便利超市有哪些)

cvs便利店(便利超市有哪些)

本文目录便利超市有哪些便利店的含义是什么便利超市有哪些1、全家、罗森(华联罗森)等。服务质量一般较高,营业员较为年轻。管理水平较高,经营的商品有不少为跨国品牌。2、好德(农工商)、良友、可的(光明公司),快客(联华)、好邻居、喜士多(润泰集

2025年4月15日 05:00

inline函数用法(matlab inline 函数的用法)

inline函数用法(matlab inline 函数的用法)

本文目录matlab inline 函数的用法inline函数怎么使用用数组做参数matlab inline 函数的用法inline是用来定义内联函数的比如说:y=inline(’sin(x)’,’x’)%第一个参数是表达式,第二个参数是函

2025年3月17日 14:40

oracle下载安装包(如何在官方网站下载ORACLE的安装包)

oracle下载安装包(如何在官方网站下载ORACLE的安装包)

本文目录如何在官方网站下载ORACLE的安装包oracle安装包,官网如何下载,看不懂英文.请解释下主要意思.win10怎么安装oracle10如何在官方网站下载ORACLE的安装包oraclehttp://www.oracle.com/t

2025年4月5日 04:50

opengl官网下载(请问opengl 1.3哪有下载)

opengl官网下载(请问opengl 1.3哪有下载)

本文目录请问opengl 1.3哪有下载求openGL下载地址哪里有opengl的下载OpenGL在那里下载OPENGL哪里下载/请问opengl 1.3哪有下载1.3估计你是很难找到了 官网opengl.org已经出到4.0了,它里面包括

2025年3月18日 16:40

covered怎么读(cover怎么读)

covered怎么读(cover怎么读)

本文目录cover怎么读cover什么意思cover的八种意思cover怎么读cover 英 过去式:covered 过去分词:covered 现在分词:covering 复数:covers vt. 1.覆盖, 遮盖 2.掩盖 3.

2025年3月31日 07:40

struggle to do sth(struggle的用法是否有struggle to 的用法)

struggle to do sth(struggle的用法是否有struggle to 的用法)

本文目录struggle的用法是否有struggle to 的用法make an attempt to do和struggle to do有没有努力的意思struggle(v.)和strive的区别struggle to do什么意思str

2025年2月26日 06:10

ios人脸识别(iosQQ系统如何重置人脸识别)

ios人脸识别(iosQQ系统如何重置人脸识别)

本文目录iosQQ系统如何重置人脸识别苹果ios10系统照片人脸识别功如何使用苹果人脸识别突然用不了苹果下载软件人脸识别了怎么还要输入动态密码和密码苹果如何设置两个人脸识别iPhonex人脸识别失败怎么办,有啥办法解决苹果手机人脸识别突然不

2025年3月16日 01:50

电脑安装双系统的利弊(电脑装双系统有什么坏处)

电脑安装双系统的利弊(电脑装双系统有什么坏处)

本文目录电脑装双系统有什么坏处电脑双系统有什么好处和坏处电脑装2个系统有哪些好处和坏处越详细越好电脑装双系统有什么好处和坏处电脑双系统有什么坏处有没有必要装双系统有什么好处和坏处苹果电脑装双系统利弊电脑装双系统有什么弊端吗电脑装双系统有什么

2025年2月19日 22:20

talented的中文(英语I am courageous and I am talented怎么翻译)

talented的中文(英语I am courageous and I am talented怎么翻译)

本文目录英语I am courageous and I am talented怎么翻译talent的用法及短语是什么英语I am courageous and I am talented怎么翻译I am courageous and I a

2025年4月9日 05:50

java工厂设计模式(java什么是工厂设计模式)

java工厂设计模式(java什么是工厂设计模式)

本文目录java什么是工厂设计模式怎样使用Java实现Factory设计模式java什么是工厂设计模式把创建对象的工作,交给一个抽象出来的概念’工厂’去做,就是工厂设计模式。比如,你要新建一个用户对象 User user=new User(

2025年3月28日 04:30

loadimage(一开机就出现loadimage failed)

loadimage(一开机就出现loadimage failed)

本文目录一开机就出现loadimage failedloadimage:none of the 2 overloads can convert一开机就出现loadimage failed解决方案在另一台电脑上制作启动U盘(需格式化U盘,注意

2025年4月15日 13:40

php mysql 连接池(php做的网站 连接mysql数据库 效率问题)

php mysql 连接池(php做的网站 连接mysql数据库 效率问题)

本文目录php做的网站 连接mysql数据库 效率问题Nginx跟php和mysql数据库怎么连接的php-fpm怎么连接的mysqlnginx+ mysql +php 能连接数据库,但是不能读取数据库数据PHP服务器端守护进程怎么实现My

2025年2月20日 13:20

the service is unavailable(the service is unavailable.是什么意思)

the service is unavailable(the service is unavailable.是什么意思)

本文目录the service is unavailable.是什么意思http error 503.the service is unavailable是什么意思http error 503.the service is unavaila

2025年3月4日 00:30

mod函数是什么意思(在EXCEL中“MOD函数”的用法是什么)

mod函数是什么意思(在EXCEL中“MOD函数”的用法是什么)

本文目录在EXCEL中“MOD函数”的用法是什么算法里的MOD是什么意思怎么运算在VB中,MOD是什么函数在matlab中mod是什么意思Excel mod函数MOD函数解释 =MOD(E29:J29,6)代表什么意思在EXCEL中,MOD

2025年2月26日 12:30

面向对象模型的特点(什么是面向对象过程模型,有什么优点和缺点)

面向对象模型的特点(什么是面向对象过程模型,有什么优点和缺点)

本文目录什么是面向对象过程模型,有什么优点和缺点数据库面向对象模型的优缺点是什么面向对象 基本特征面向对象的三大特征是什么面向对象的主要特征有哪些方面什么是面向对象过程模型,有什么优点和缺点优点: (1)是一种全新的系统分析设计方法

2025年3月31日 11:50

近期文章

split js(js中split())
2025-04-20 03:00:08
csstext(css 中text)
2025-04-20 02:50:02
什么是PHP?php 是什么
2025-04-20 02:40:02
本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:20
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:7
winrar下载官网(WinRAR哪儿下载\)
2025-04-19 09:30:01 浏览:5
标签列表

热门搜索