java表达式计算器(java计算数学表达式)

今天给各位分享java表达式计算器的知识,其中也会对java计算数学表达式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、java描述表达式计算器 已有程序只能进行一位数字的运算,怎么改一下使之能进行多位数的运算?2、java swing 计算器 键盘 表达式求值3、计算器制作JAVA版(第三步,表达式求值(+4、java如何设计四则计算器?

java描述表达式计算器 已有程序只能进行一位数字的运算,怎么改一下使之能进行多位数的运算?

这个输入进去的只是一串字符,你要有语法分析的,可以采用这个思路(我用这个思路做了c++版的),表达式一般以数字开头,然后使用一个下标,向后读这个字符串,当遇到不是数字的字符时(可以用ASCII码这些来判别0到9),把前面的一串(也就是一个数字)转换成int或者float型的,至于计算,那就采用堆栈就行了。一般都是使用逆波兰。

java swing 计算器 键盘 表达式求值

目标:初始化窗体

代码:如下

—————-

public class View extends JFrame{

public View(){

this.setTitle(“计算器”);//设置标题

this.setResizable(false);//不可改变大小

this.setLocationRelativeTo(null);//居中显示

this.setSize(228, 324);//窗体大小,可以使用FastStone Capture的屏幕尺量一下win计算器的大小

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认关闭操作

}

public static void main(String[] args) {

new View().setVisible(true);

}

}

目标:设置菜单

代码:如下

—————-

/**

* 创建初始化菜单方法(别忘记在构造函数里调用)

*/

private void initMenu(){

jmb = new JMenuBar();//创建菜单条

jm_view = new JMenu(“查看(V)”);//查看菜单

jm_view.setMnemonic(‘V’);//设置热键

jm_edit = new JMenu(“编辑(E)”);//编辑菜单

jm_edit.setMnemonic(‘E’);

jm_help = new JMenu(“帮助(H)”);//帮助菜单

jm_help.setMnemonic(‘H’);

jmb.add(jm_view);

jmb.add(jm_edit);

jmb.add(jm_help);

this.setJMenuBar(jmb);//将菜单条加入窗体中

}

目标:仿结果显示框

代码:如下

—————-

/**

* 创建内容区域初始化方法

*/

private void initContent(){

//整个窗口区域

JPanel jp = new JPanel();

jp.setLayout(null);//设置空布局以便绝对定位

//显示框区域

JPanel jptmp = new JPanel(){

//获取背景图片,使用截图工具从win计算器显示框中截取2像素宽度作为背景

Image bg = new ImageIcon(“imgs/bg.png”).getImage();

/**

* 填充结果显示区域的背景

*/

@Override

protected void paintComponent(Graphics g) {

super.paintComponent(g);

//x轴平铺满面板

for(int i = 0;ithis.getWidth();i+=bg.getWidth(this)){

g.drawImage(bg, i, 0, this);//绘制背景图片

}

}

};

//设置显示框上方小字体

Font font_lab = new Font(“arial”, Font.BOLD, 22);

jla_input = new JLabel();

jla_input.setText(“0”);

//设置字体右对齐

jla_input.setHorizontalAlignment(JLabel.RIGHT);

jla_input.setFont(font_lab);

//设置显示框中计算结果的字体

font_lab = new Font(“arial”, Font.BOLD, 10);

jla_show = new JLabel();

jla_show.setText(“sqrt”);

//设置字体右对齐

jla_show.setHorizontalAlignment(JLabel.RIGHT);

jla_show.setFont(font_lab);

//设置显示框区域的位置的大小

jptmp.setBounds(14, 15, 190, 50);

jptmp.setLayout(new BorderLayout());

jptmp.add(jla_show,BorderLayout.NORTH);

jptmp.add(jla_input,BorderLayout.CENTER);

//设置边框

jptmp.setBorder(BorderFactory.createLineBorder(new Color(142,156,173)));

jp.add(jptmp);

this.setLayout(new BorderLayout());

this.add(jp,BorderLayout.CENTER);

}

目标:绘制其他按钮

代码:如下

—————-

①设置字符枚举类

public enum Operator{

//用于swith判断,待用

mC,mR,mS,mAdd,mSubtract,//mc,mr,ms,m+,m-

clBack,clError,clClear,operNegation,operSqrt,//-,ce,c,-/+,开平方

n7,n8,n9,operDivide,operPer,// /,%,

n4,n5,n6,operMultiply,operReciproc,//*,倒数

n1,n2,n3,operSubtract,operEqu,//-,=

n0,operDot,operAdd;//+

//用于显示

public static final String [] labs = new String[]{

“MC”,”MR”,”MS”,”M+”,”M-“,

“←”,”CE”,”C”,”±”,”√”,

“7”,”8″,”9″,”/”,”%”,

“4”,”5″,”6″,”*”,”1/x”,

“1”,”2″,”3″,”-“,”=”,

“0”,”.”,”+”

};

}

②添加按钮

jptmp = new JPanel();

jptmp.setBounds(14, 72, 196,194);

jptmp.setLayout(null);

Font font_but = new Font(“arial”, Font.BOLD, 10);//创建按钮字体

for (int i = 0; i jb_oper.length; i++) {

jb_oper[i] = new JButton(Operator.labs[i]);//设置按钮文字

jb_oper[i].setForeground(new Color(30,57,91));//设置字体颜色

jb_oper[i].setActionCommand(Operator.values()[i].toString());//设置按钮标示

jb_oper[i].setFont(font_but);//设置按钮字体

jb_oper[i].setBounds(i%5*(33+6), i/5*(24+6), 33, 24);//统一33宽,24高,间距6,每5个换一行

jb_oper[i].setBorder(new LineBorder(new Color(135,151,170), 1));//设置按钮边框

jb_oper[i].addActionListener(this);//添加监听器

jptmp.add(jb_oper[i]);

}

jb_oper[24].setBounds(24%5*(33+6), 24/5*(24+6), 33, 24*2+6);//调整等号按钮位置

jb_oper[25].setBounds(25%5*(33+6), 25/5*(24+6), 33*2+6, 24);//调整0按钮的位置

jb_oper[26].setBounds(27%5*(33+6), 26/5*(24+6), 33, 24);//调整.按钮的位置

jb_oper[27].setBounds(28%5*(33+6), 27/5*(24+6), 33, 24);//调整较好按钮的位置

jp.add(jptmp);

完整代码

—–

package com.lfd.view;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.BorderFactory;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JPanel;

import javax.swing.border.LineBorder;

import com.lfd.common.Operator;

public class View extends JFrame implements ActionListener{

private JMenuBar jmb;

private JMenu jm_view,jm_edit,jm_help;

private JLabel jla_input,jla_show;

private JButton[] jb_oper = new JButton[28];

public View(){

initMenu();

initContent();

this.setTitle(“计算器”);//设置标题

this.setResizable(false);//不可改变大小

this.setLocationRelativeTo(null);//居中显示

this.setSize(228, 324);//窗体大小,可以使用FastStone Capture的屏幕尺量一下win计算器的大小

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认关闭操作

}

/**

* 初始化菜单方法

*/

private void initMenu(){

jmb = new JMenuBar();//创建菜单条

jm_view = new JMenu(“查看(V)”);//查看菜单

jm_view.setMnemonic(‘V’);//设置热键

jm_edit = new JMenu(“编辑(E)”);//编辑菜单

jm_edit.setMnemonic(‘E’);

jm_help = new JMenu(“帮助(H)”);//帮助菜单

jm_help.setMnemonic(‘H’);

jmb.add(jm_view);

jmb.add(jm_edit);

jmb.add(jm_help);

this.setJMenuBar(jmb);//将菜单条加入窗体中

}

/**

* 创建内容区域初始化方法

*/

private void initContent(){

//整个窗口区域

JPanel jp = new JPanel();

jp.setLayout(null);

//显示框区域

JPanel jptmp = new JPanel(){

//获取背景图片,使用截图工具从win计算器显示框中截取2像素宽度作为背景

Image bg = new ImageIcon(“imgs/bg.png”).getImage();

/**

* 填充结果显示区域的背景

*/

@Override

protected void paintComponent(Graphics g) {

super.paintComponent(g);

//x轴平铺满面板

for(int i = 0;ithis.getWidth();i+=bg.getWidth(this)){

g.drawImage(bg, i, 0, this);//绘制背景图片

}

}

};

//设置显示框上方小字体

Font font_lab = new Font(“arial”, Font.BOLD, 22);

jla_input = new JLabel();

jla_input.setText(“0”);

//设置字体右对齐

jla_input.setHorizontalAlignment(JLabel.RIGHT);

jla_input.setFont(font_lab);

//设置显示框中计算结果的字体

font_lab = new Font(“arial”, Font.BOLD, 10);

jla_show = new JLabel();

jla_show.setText(“sqrt”);

//设置字体右对齐

jla_show.setHorizontalAlignment(JLabel.RIGHT);

jla_show.setFont(font_lab);

//设置显示框区域的位置的大小

jptmp.setBounds(14, 15, 190, 50);

jptmp.setLayout(new BorderLayout());

jptmp.add(jla_show,BorderLayout.NORTH);

jptmp.add(jla_input,BorderLayout.CENTER);

//设置边框

jptmp.setBorder(BorderFactory.createLineBorder(new Color(142,156,173)));

jp.add(jptmp);

jptmp = new JPanel();

jptmp.setBounds(14, 72, 196,194);

jptmp.setLayout(null);

Font font_but = new Font(“arial”, Font.BOLD, 10);//创建按钮字体

for (int i = 0; i jb_oper.length; i++) {

jb_oper[i] = new JButton(Operator.labs[i]);//设置按钮文字

jb_oper[i].setForeground(new Color(30,57,91));//设置字体颜色

jb_oper[i].setActionCommand(Operator.values()[i].toString());//设置按钮标示

jb_oper[i].setFont(font_but);//设置按钮字体

jb_oper[i].setBounds(i%5*(33+6), i/5*(24+6), 33, 24);//统一33宽,24高,间距6,每5个换一行

jb_oper[i].setBorder(new LineBorder(new Color(135,151,170), 1));//设置按钮边框

jb_oper[i].addActionListener(this);//添加监听器

jptmp.add(jb_oper[i]);

}

jb_oper[24].setBounds(24%5*(33+6), 24/5*(24+6), 33, 24*2+6);//调整等号按钮位置

jb_oper[25].setBounds(25%5*(33+6), 25/5*(24+6), 33*2+6, 24);//调整0按钮的位置

jb_oper[26].setBounds(27%5*(33+6), 26/5*(24+6), 33, 24);//调整.按钮的位置

jb_oper[27].setBounds(28%5*(33+6), 27/5*(24+6), 33, 24);//调整较好按钮的位置

jp.add(jptmp);

this.setLayout(new BorderLayout());

this.add(jp,BorderLayout.CENTER);

}

public static void main(String[] args) {

new View().setVisible(true);

}

@Override

public void actionPerformed(ActionEvent e) {

//TODO 实现逻辑操作

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

String commond = jb.getActionCommand();

}

}

—–

package com.lfd.common;

public enum Operator{

mC,mR,mS,mAdd,mSubtract,//mc,mr,ms,m+,m-

clBack,clError,clClear,operNegation,operSqrt,//-,ce,c,-/+,开平方

n7,n8,n9,operDivide,operPer,// /,%,

n4,n5,n6,operMultiply,operReciproc,//*,倒数

n1,n2,n3,operSubtract,operEqu,//-,=

n0,operDot,operAdd;//+

public static final String [] labs = new String[]{

“MC”,”MR”,”MS”,”M+”,”M-“,

“←”,”CE”,”C”,”±”,”√”,

“7”,”8″,”9″,”/”,”%”,

“4”,”5″,”6″,”*”,”1/x”,

“1”,”2″,”3″,”-“,”=”,

“0”,”.”,”+”

};

}

java表达式计算器(java计算数学表达式)

计算器制作JAVA版(第三步,表达式求值(+

1.首先思考一下制作计算器需要哪些Swing组件,下面列出一些制作计算器的一些常用组件:

JFrame    Jpanel    JButton     JTextField

2.选用布局管理器:

这里采用的是GridBagLayout,即网格包布局管理器。

3.如何处理按钮事件:

这里可以分两种情况来考虑,一:处理0~9的数字按钮和”.”按钮,这种按钮的单击事件很简单,只需要获取监听的对象,并在文本框中显示对象的数据即可。

二:处理操作按钮即文本为+,-,*,/,C(清除),D(删除)和=的按钮,这些按钮的事件处理稍微复杂。

4.具体实现代码如下:

1.创建Calculator类,该类继承自JFrame类

[java] view plain copy

import java.awt.BorderLayout;

import java.awt.GridBagConstraints;

import java.awt.GridBagLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTextField;

public class Calculator extends JFrame {

private static final long serialVersionUID = 1L;

private JTextField jtf=new JTextField();

private JPanel panel=new JPanel();

private GridBagLayout gridbaglayout=new GridBagLayout();

private GridBagConstraints constraints=new GridBagConstraints();

private int select=0;

//    private String command=””;

private double temp=0.0;

private double number;

public Calculator(){                                                           //创建Calculator类的构造方法

this.setTitle(“计算器”);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.add(jtf,BorderLayout.NORTH);

this.add(panel, BorderLayout.CENTER);

panel.setLayout(gridbaglayout);                                           //将panel面板设置成网格包布局管理器

this.add(panel);

jtf.setHorizontalAlignment(JTextField.RIGHT);                             //文本靠右

ActionListener nums=new CalculatorAction1();

ActionListener opin=new CalculatorAction2();

constraints.fill=GridBagConstraints.BOTH;

//      constraints.weightx=0.1;

//      constraints.weighty=0.1;

constraints.gridheight=GridBagConstraints.REMAINDER;

addButton(“”,nums);

constraints.gridheight=1;

addButton(“C”,opin);

addButton(“7”,nums);

addButton(“4”,nums);

addButton(“1”,nums);

constraints.gridheight=GridBagConstraints.REMAINDER;

addButton(“%”,nums);

constraints.gridheight=1;

addButton(“D”,opin);

addButton(“8”,nums);

addButton(“5”,nums);

addButton(“2”,nums);

constraints.gridheight=GridBagConstraints.REMAINDER;

addButton(“0”,nums);

constraints.gridheight=1;

addButton(“/”,opin);

addButton(“9”,nums);

addButton(“6”,nums);

addButton(“3”,nums);

constraints.gridheight=GridBagConstraints.REMAINDER;

addButton(“.”,nums);

constraints.gridheight=1;

addButton(“*”,opin);

addButton(“-“,opin);

addButton(“+”,opin);

constraints.gridheight=GridBagConstraints.REMAINDER;

addButton(“=”,opin);

}

private void addButton(String str,ActionListener list){                     //添加按钮方法

JButton button=new JButton(str);

if(str.equals(“”)||str.equals(“%”)){

button.setEnabled(false);

}

button.addActionListener(list);      //向按钮添加事件

gridbaglayout.setConstraints(button, constraints);

panel.add(button);                   //将按钮添加到JPanel容器中

}

class CalculatorAction1 implements ActionListener{                       //创建内部类并实现ActionListener接口,实现数字按钮的监听事件

public void actionPerformed(ActionEvent e){

String input = e.getActionCommand();

//          System.out.println(input);

jtf.setText(jtf.getText()+input);   //在文本中显示用户单击的按钮文本内容

}

}

class CalculatorAction2 implements ActionListener{                      //创建内部类并实现ActionListener接口,实现操作按钮的监听事件

public void actionPerformed(ActionEvent e){

String command=e.getActionCommand();

if(command.equals(“+”)){

temp=Double.parseDouble(jtf.getText());

jtf.setText(“”);

select=1;

}

if(command.equals(“-“)){

temp=Double.parseDouble(jtf.getText());

jtf.setText(“”);

select=2;

}

if(command.equals(“*”)){

temp=Double.parseDouble(jtf.getText());

jtf.setText(“”);

select=3;

}

if(command.equals(“/”)){

temp=Double.parseDouble(jtf.getText());

jtf.setText(“”);

select=4;

}

if(command.equals(“C”)){

jtf.setText(“”);

}

if(command.equals(“D”)){

jtf.setText(jtf.getText().substring(0, jtf.getText().length()-1));

}

if(command.equals(“=”)){

if(select==1){

number=Double.parseDouble(jtf.getText());

jtf.setText((temp+number)+””);

}

else if(select==2){

number=Double.parseDouble(jtf.getText());

jtf.setText((temp-number)+””);

}

else if(select==3){

number=Double.parseDouble(jtf.getText());

jtf.setText((temp*number)+””);

}

else if(select==4){

number=Double.parseDouble(jtf.getText());

if(number==0){

JOptionPane.showMessageDialog(panel, “除数不能为0”);

}

else

jtf.setText((temp/number)+””);

}

}

}

}

}

2.创建CalculatorTest类

[java] view plain copy

public class CalculatorTest {

public static void main(String[] args) {

Calculator mainFrame=new Calculator();

mainFrame.setBounds(300, 200, 200, 200);

mainFrame.setVisible(true);

mainFrame.setResizable(false);

}

}

阅读全文

java如何设计四则计算器?

用一个栈,来存储所有元素

定义4种运算规则,在运算规则种进行对应的运算

分解输入的表达式,将每个字符都保存入栈中

当遇到运算符,从栈中找到前面的元素与后面的元素,进行对应的组合后,再保存入栈中

java表达式计算器的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java计算数学表达式、java表达式计算器的信息别忘了在本站进行查找喔。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月30日 14:47:46
下一篇 2024年3月30日 14:53:59

相关推荐

  • c语言中布尔表达式,c语言布尔运算

    C语言表达式有哪些? 1、在C语言中,表达式是由操作数和操作符组成的组合,操作数是指参与运算的变量或常量,而操作符则表示执行的运算操作。 2、c语言中常用表达式有:算术表达式;赋值表达式;逗号表达式;关系表达式;逻辑表达式。希望对你有所帮助,祝你学习进步。 3、逻辑表达式的值是一个逻辑值,即true或false。C语言编译系统在给出逻辑运算结果时,以数字1表…

    2024年5月23日
    5300
  • 黑客数学学习app小学,黑客数学思维课怎么样

    有没有什么学习数学的软件 《宝宝玩数字》这款激发孩子对识字认知的软件,帮助小孩掌握生活用品物品的数量关系。软件给展示日常物品,在熟悉的环境下来激发宝宝探索数字与数量之间的关系。 《洋葱学园》软件里有为初中生专门定制的数学学习视频,让数学学起来更加有趣,还有海量数学题库可以练习,通过做题掌握课上不理解的知识点,由易到难掌握数学。 《大学数学》这个软件专为大学生…

    2024年5月23日
    4100
  • c语言实现计算器带界面,c语言实现计算器代码

    如何用C语言设计一个程序模拟有图形界面的计算器 C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。 总之,学图形化编程比较好的顺序是:C(结构化语言,入门)- C++(面向对象…

    2024年5月23日
    7200
  • y=x3的c语言表达式,c语言x=y=3

    y等于x3次方减3×2次方减7的c语言表达式 在C语言中表示x的y次方,可以用库函数pow函数。 y(3)0 x=+3 是极小值点,极小值=y(-1)=-27 x∈(-∞,-1)∪(3,+∞)是单调递增区间 x∈(-1,3)是单调递减区间 函数的单调性:设函数f(x)的定义域为D,区间I包含于D。 之后,定义两个变量x和y int x,y;并输入一…

    2024年5月22日
    4500
  • java数学测试,java测试笔试题

    用java程序来算出一个数学问题 1、数学公式:圆周长=2*π*半径 面积=π*半径算法分析:周长和面积都依赖半径,所以要先输入半径值,然后套用公式,计算周长和面积。 最终输出结果即可。 2、从键盘输入一个正整数,按数字的相反顺序输出。写一条 for 语句,计数条件为 n 从 100~200,步长为 2;然后再用 while 语句实现同样的循环。 3、pac…

    2024年5月22日
    4100
  • c语言编程表达式求值问题,c语言求值的编程

    c语言表达式求值 1、思路:中缀表达式-后缀表达式-求值 参考代码:include iostream include cstdio include vector include cstdlib include cstring include iterator include algorithm // 堆栈的数组实现,数组的大小固定。 2、c=a+b+48;b…

    2024年5月22日
    4700
  • java定义向量计算器,java变量运算

    用JAVA编写一个简单的计算器,要求如下: 打开IED:打开自己java编程的软件,采用的是eclipse软件。建立java工程。编写类。 用JAVA编写一个计算器 70 实现类似Windows操作系统“计算器”的功能。可以完成任意的通常借助手持计算器来完成的标准运算。“计算器”可用于基本的算术运算,比如加减运算等。 给project取一个名字,其他的选项都…

    2024年5月22日
    4000
  • 十进制转换java,十进制转换十六进制计算器

    java中如何将十进制数字转化成二进制? 十进制转成二进制Integer.toBinaryString(inti)。 十进制转成二进制Integer.toBinaryString(int i) 。 将十进制转换成二进制的算法如下:给定一个数;根据十进制转换二进制的思想:把这个数除以2若为单数则为1,为偶数则为0,直到最后一个数为1为止。 Java中如何实现十…

    2024年5月22日
    4700
  • 黑客数学线上学习视频,黑客数学有用吗

    给力黑客数学骗人吗 南京给力教育挺好的,课程丰富,价格优惠,名师一对一教学。 有必要黑客数学整体来看教官的资质还不错,对孩子特别热情,孩子也喜欢学习。主要致力于012岁少年儿童的英语、数学培训以及故事诵读教育,幼教、小学全科辅导,以及亲子育儿教育,企业培训、营队活动、教材代理销售、课程规划等。 不是骗人的。是纯公益的,宗旨人人为我,我为人人,意思就是他们免费…

    2024年5月22日
    4800
  • 年终奖计算器excel,年终奖计算器张大妈

    excel公式如何计算年终奖个人所得税 位身份证号的第17位是判断性别的数字,奇数代表男性,偶数代表女性。因此关键在于将第17位数字提取出来,输入公式:=MID(B2,17,1)然后利用MOD函数取第17位数字除以2的余数。 发放年终奖的当月工资高于3500元时,年终奖扣税方式为:年终奖*税率-速算扣除数,税率是按年终奖/12作为“应纳税所得额”对应的税率。…

    2024年5月21日
    4100

发表回复

登录后才能评论



关注微信