「java的加减乘除」java的加减乘除运算代码

博主:adminadmin 2022-11-28 18:56:09 43

本篇文章给大家谈谈java的加减乘除,以及java的加减乘除运算代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java的加减乘除问题

//JAVA编程:四则运算(接收用户输入的2个操作数,和运算符),计算之后,输出结果~~~~

import java.util.Scanner;

public class 四则运算 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.print("请输入第一个数字:");

int a = sc.nextInt();

System.out.print("请输入运算符号:");

String str = sc.next();

char ch = str.charAt(0);

System.out.print("请输入第二个数字:");

int b = sc.nextInt();

switch(ch)

{

case '+':

System.out.println(a+"+"+ b + "="+(a+b));

break;

case '-':

System.out.println(a+"-"+ b+ "="+(a-b));

break;

case '*':

System.out.println(a+"*"+ b+ "="+(a*b));

break;

case '/':

if(b==0){

System.out.println("被除数为零,运算无意义!");

break;

}

else {

System.out.println(a+"/"+ b+ " = "+(a/b));

break;

}

default:

System.out.println("运算符是无意义字符!");

break;

}

}

}

望采纳~~~~~~~~

java如何实现3个 个位数的加减乘除运算

public class ParamDemo {

    public static void main(String[] args) {

        MapString, 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)

实际上这相当于javascript的eval方法,以下是该方法的java实现:

//Eval.java

import java.util.ArrayList;

import java.util.List;

import java.util.Stack;

public class Eval {

public int eval(String exp){

ListString list = infixExpToPostExp(exp);//转化成后缀表达式

return doEval(list);//真正求值

}

//遇到操作符压栈,遇到表达式从后缀表达式中弹出两个数,计算出结果,压入堆栈

private int doEval(ListString list) {

StackString stack = new StackString();

String element;

int n1,n2,result;

try{

for(int i = 0; i list.size();i++){

element = list.get(i);

if(isOperator(element)){

n1 = Integer.parseInt(stack.pop());

n2 = Integer.parseInt(stack.pop());

result = doOperate(n1,n2,element);

stack.push(new Integer(result).toString());

}else{

stack.push(element);

}

}

return Integer.parseInt(stack.pop());

}catch(RuntimeException e){

throw new IllegalExpressionException(e.getMessage());

}

}

private int doOperate(int n1, int n2, String operator) {

if(operator.equals("+"))

return n1 + n2;

else if(operator.equals("-"))

return n1 - n2;

else if(operator.equals("*"))

return n1 * n2;

else

return n1 / n2;

}

private boolean isOperator(String str){

return str.equals("+") || str.equals("-") || str.equals("*") || str.equals("/");

}

private ListString infixExpToPostExp(String exp){//将中缀表达式转化成为后缀表达式

ListString postExp = new ArrayListString();//存放转化的后缀表达式的链表

StringBuffer numBuffer = new StringBuffer();//用来保存一个数的

StackCharacter opStack = new StackCharacter();//操作符栈

char ch,preChar;

opStack.push('#');

try{

for(int i = 0; i exp.length();){

ch = exp.charAt(i);

switch(ch){

case '+':

case '-':

case '*':

case '/':

preChar = opStack.peek();

// 如果栈里面的操作符优先级比当前的大,则把栈中优先级大的都添加到后缀表达式列表中

while(priority(preChar) = priority(ch)){

postExp.add(""+preChar);

opStack.pop();

preChar = opStack.peek();

}

opStack.push(ch);

i++;

break;

case '(':

// 左括号直接压栈

opStack.push(ch);

i++;

break;

case ')':

// 右括号则直接把栈中左括号前面的弹出,并加入后缀表达式链表中

char c = opStack.pop();

while(c != '('){

postExp.add("" + c);

c = opStack.pop();

}

i++;

break;

// #号,代表表达式结束,可以直接把操作符栈中剩余的操作符全部弹出,并加入后缀表达式链表中

case '#':

char c1;

while(!opStack.isEmpty()){

c1 = opStack.pop();

if(c1 != '#')

postExp.add("" + c1);

}

i++;

break;

//过滤空白符

case ' ':

case '\t':

i++;

break;

// 数字则凑成一个整数,加入后缀表达式链表中

default:

if(Character.isDigit(ch)){

while(Character.isDigit(ch)){

numBuffer.append(ch);

ch = exp.charAt(++i);

}

postExp.add(numBuffer.toString());

numBuffer = new StringBuffer();

}else{

throw new IllegalExpressionException("illegal operator");

}

}

}

}catch(RuntimeException e){

throw new IllegalExpressionException(e.getMessage());

}

return postExp;

}

private int priority(char op){//定义优先级

switch(op){

case'+':

case'-':

return 1;

case'*':

case'/':

return 2;

case'(':

case'#':

return 0;

}

throw new IllegalExpressionException("Illegal operator");

}

}

Main.java 主函数所在类

public class Main

{

public static void main(String[] args) {

try {

InputStreamReader isr=new InputStreamReader(System.in);

BufferedReader br=new BufferedReader(isr);

String exp=br.readLine();

int result = eval.eval(exp);

System.out.println(result);

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

IllegalExpressionException异常类

public class IllegalExpressionException extends RuntimeException{

public IllegalExpressionException(){

}

public IllegalExpressionException(String info){

super(info);

}

}

java加减乘除是什么类

java中实现加减乘除的类是java.math.BigDecimal类. BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。

加法运算:调用BigDecimal类的add方法即可

BigDecimal b1 = new BigDecimal("1");

BigDecimal b2 = new BigDecimal("2");

BigDecimal result = b1.add(b2);//加法

System.out.println(result);

减法运算:调用BigDecimal类的subtract方法即可

BigDecimal b1 = new BigDecimal(3.2);

BigDecimal b2 = new BigDecimal(1.6);

BigDecimal result = b1.subtract(b2);//减法

System.out.println(result);

乘法运算:调用BigDecimal类的multiply方法即可

BigDecimal b1 = new BigDecimal(9);

BigDecimal b2 = new BigDecimal(8.2);

BigDecimal result = b1.multiply(b2);//乘法

System.out.println(result);

除法运算:调用BigDecimal类的divide方法即可。

注意: 除法运算存在除不尽的情况,比如1.0/3=0.333333.. 我们需要指定小数点后面的长度,以及有效的舍入模式(例如四舍五入模式).

BigDecimal b1 = new BigDecimal("1");

BigDecimal b2 = new BigDecimal("3");

int scale = 5;//scale 指定小数点后面的位数为5位

double result = b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();// 除法

// BigDecimal.ROUND_HALF_UP 表示四舍五入

System.out.println(result);

备注:

1:BigDecimal的构造参数有很多,但浮点类型建议转换成字符串类型, 避免精度的丢失.

double d1 =0.001;//浮点类型

String s1 = Double.toString(d1);//转成字符串

BigDecimal b1 = new BigDecimal(s1);//使用字符串作为构造参数

2:BigDecimal类, 内存占用比基本类型多,并且为了计算的精度,速度比double慢一点.所以,只有在需要精确计算的情况下,才使用BigDecimal类进行. 普通运算,还是多使用+-*/运算符,位运算符等.

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(scale0){

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(scale0){

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编写的实现加减乘除的程序如下

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[]={"+","-","*","/"};

 JComboBoxString jcb=new JComboBoxString(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的加减乘除的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java的加减乘除运算代码、java的加减乘除的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。