问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求用Java 编写的简单计算器...支持加减乘除就可以~ 尽量使代 码简单....谢了~

发布网友 发布时间:2022-04-23 07:44

我来回答

2个回答

热心网友 时间:2023-10-08 15:27

加减乘除括号都有了,自己改一下就OK
----------------------
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

class Stack_Float
{
float nums[];
int top;

Stack_Float()
{
nums = new float[50];
top = -1;
}

boolean IsEmpty()
{
if (top == -1)
return true;
else
return false;
}

float Pop_Stack()
{
if (top == -1)
{
return 0;
}
top--;
return nums[top + 1];
}

float GetTop()
{
return nums[top];
}

void Push_Stack(float num)
{
if (top == 49)
return;
top++;
nums[top] = num;
}
}

class Stack_Char
{
char str[];
int top;

Stack_Char()
{
str = new char[50];
top = -1;
}

boolean CanPush(char c)
{
int temp = top;
if (c == '(')
{
while (temp != -1)
{
if (str[temp] == '(')
{
return false;
}
temp--;
}
}
temp = top;
if (c == '[')
{
while (temp != -1)
{
if (str[temp] == '[' || str[temp] == '(')
{
return false;
}
temp--;
}
}
if (c == '{')
{
while (temp != -1)
{
if (str[temp] == '{' || str[temp] == '[' || str[temp] == '(')
{
return false;
}
temp--;
}
}
return true;
}

boolean IsEmpty()
{
if (top == -1)
return true;
else
return false;
}

void Push_Stack(char ch)
{
if (top == 49)
return;
top++;
str[top] = ch;
}

char Pop_Stack()
{
if (top == -1)
return '\0';
top--;
return str[top + 1];
}

char GetTop()
{
if (top == -1)
{
System.out.print("error");
System.exit(0);
}
return str[top];
}
}

public class jisuanqi extends javax.swing.JFrame implements ActionListener
{
JTextField text = new JTextField();
JTextField text1 = new JTextField();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
JButton jButton4 = new JButton();
JButton jButton5 = new JButton();
JButton jButton6 = new JButton();
JButton jButton7 = new JButton();
JButton jButton8 = new JButton();
JButton jButton9 = new JButton();
JButton jButton10 = new JButton();
JButton jButton11 = new JButton();
JButton jButton12 = new JButton();
JButton jButton13 = new JButton();
JButton jButton14 = new JButton();
JButton jButton15 = new JButton();
JButton jButton16 = new JButton();
JButton jButton17 = new JButton();
JButton jButton18 = new JButton();
JButton jButton19 = new JButton();
JButton jButton20 = new JButton();
JButton jButton21 = new JButton();
JButton jButton22 = new JButton();
String show = "";

public jisuanqi()
{
initComponents();
}

char[] TranSmit(char str[])
{
char houzhui[] = new char[50]; // 存放后缀表达式的字符串
int i = 0, j = 0;
char c = str[i];
Stack_Char s = new Stack_Char(); // 存放运算符的栈
while (c != '=') // 对算术表达式扫描未结束时
{
if (c >= '0' && c <= '9')
{
while (c >= '0' && c <= '9')// 数字直接入栈
{
houzhui[j] = c;
j++;
i++;
c = str[i];
}
houzhui[j] = '#';// 用#隔开数字
j++;
}
switch (c) // 扫描到运算符时
{
case '+':
case '-':
case '*':
case '/':
case '(':
case '[':
case '{':
if (s.IsEmpty() == true) // 栈空,直接入栈
{
s.Push_Stack(c);
i++;
c = str[i];
break;
}
if (ComPare(s.GetTop(), c) == -1) {
s.Push_Stack(c); // 入栈
i++;
c = str[i];
break;
}
if (ComPare(s.GetTop(), c) == 1) {
houzhui[j] = s.Pop_Stack();// 出栈元素存入后缀表达式
j++;
break;
}

case ')': // 扫描到 )
while (s.GetTop() != '(') // 未扫描到 ( 时,出栈
{
houzhui[j] = s.Pop_Stack();
j++;
}
s.Pop_Stack(); // '(' 出栈
i++;
c = str[i];
break;
case ']': // 扫描到 ]
while (s.GetTop() != '[') // 未扫描到 [ 时,出栈
{
houzhui[j] = s.Pop_Stack();
j++;
}
s.Pop_Stack(); // '[' 出栈
i++;
c = str[i];
break;
case '}': // 扫描到 }
while (s.GetTop() != '{') // 未扫描到 { 时,出栈
{
houzhui[j] = s.Pop_Stack();
j++;
}
s.Pop_Stack(); // '{' 出栈
i++;
c = str[i];
break;
}
}
while (s.IsEmpty() != true)// 把剩余的运算符直接出栈
{
houzhui[j] = s.Pop_Stack();
j++;
}
houzhui[j] = '=';// 后缀表达式后面加 =
j++;
houzhui[j] = '\0';
j++;
return houzhui;
}

float Count(char str[])
{
Stack_Float s = new Stack_Float();// 定义存放数字的栈
char c = str[0];
int i = 0;
float result = 0, temp, left, right;
while (c != '=') // 未扫描到 = 时
{
if (c >= '0' && c <= '9')// 扫描到数字
{
temp = 0;
while (c != '#')// 未读到分隔符时
{
temp = temp * 10 + c - '0';
i++;
c = str[i];
}
s.Push_Stack(temp);// 进栈
}
switch (c)// 扫描到运算符时
{
case '+':
{
result = s.Pop_Stack() + s.Pop_Stack();// 2个数字出栈相加
s.Push_Stack(result);// 最后得数进栈
break;
}
case '-':
{
right = s.Pop_Stack();// 右操作数出栈
left = s.Pop_Stack();// 左操作数出栈
result = left - right;
s.Push_Stack(result);
break;
}
case '*':
{
result = s.Pop_Stack() * s.Pop_Stack();// 2个数字出栈相乘
s.Push_Stack(result);
break;
}
case '/':
{
right = s.Pop_Stack();// 右操作数出栈
left = s.Pop_Stack();// 左操作数出栈
result = left / right;
s.Push_Stack(result);
break;
}
}
i++;
c = str[i];
}
return result;
}

int ComPare(char a, char b) // 判断运算符的优先级函数
{
int s[][] = {// 栈顶元素高于算术表达式中的元素时, 返回 1,否则返回 -1
{ 1, 1, -1, -1, -1, 1, -1, 1, -1, 1 },
{ 1, 1, -1, -1, -1, 1, -1, 1, -1, 1 },
{ 1, 1, 1, 1, -1, 1, -1, 1, -1, 1 },
{ 1, 1, 1, 1, -1, 1, -1, 1, -1, 1 },
{ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 1, 1, 1, -1, 1, -1, -1, -1, -1 },
{ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 1, 1, 1, -1, -1, -1, -1, -1, 1 },
{ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 },
{ 1, 1, 1, 1, -1, -1, -1, -1, -1, -1 } };

char x1[] = { '+', '-', '*', '/', '(', ')', '[', ']', '{', '}' };// 栈顶元素
char x2[] = { '+', '-', '*', '/', '(', ')', '[', ']', '{', '}' };// 算术表达式中的元素
int k = 0, m, n = 0;
for (m = 0; m < 10; m++) // 查找2个进行比较的运算符在表中的位置,并返回比较结果
{
for (n = 0; n < 10; n++)
{
if (x1[m] == a && x2[n] == b)
{
k = 1;
break; // 找到比较结果后,跳出循环
}
}
if (k == 1)
break;
}
return s[m][n];// 返回比较结果
}

public void actionPerformed(ActionEvent e)
{
if (e.getSource() == jButton1)
{
show += "1";
text.setText(show);
}
if (e.getSource() == jButton2)
{
show += "2";
text.setText(show);
}
if (e.getSource() == jButton3)
{
show += "3";
text.setText(show);
}
if (e.getSource() == jButton4)
{
show += "4";
text.setText(show);
}
if (e.getSource() == jButton5)
{
show += "5";
text.setText(show);
}
if (e.getSource() == jButton6)
{
show += "6";
text.setText(show);
}
if (e.getSource() == jButton7)
{
show += "7";
text.setText(show);
}
if (e.getSource() == jButton8)
{
show += "8";
text.setText(show);
}
if (e.getSource() == jButton9)
{
show += "9";
text.setText(show);
}
if (e.getSource() == jButton10)
{
show += "0";
text.setText(show);
}
if (e.getSource() == jButton11)
{
show += "+";
text.setText(show);
}
if (e.getSource() == jButton12)
{
show += "-";
text.setText(show);
}
if (e.getSource() == jButton13)
{
show += "*";
text.setText(show);
}
if (e.getSource() == jButton14)
{
show += "/";
text.setText(show);
}
if (e.getSource() == jButton15)
{
show += "(";
text.setText(show);
}
if (e.getSource() == jButton16)
{
show += ")";
text.setText(show);
}
if (e.getSource() == jButton17)
{
show += "[";
text.setText(show);
}
if (e.getSource() == jButton18)
{
show += "]";
text.setText(show);
}
if (e.getSource() == jButton19)
{
show += "{";
text.setText(show);
}
if (e.getSource() == jButton20)
{
show += "}";
text.setText(show);
}
if (e.getSource() == jButton21)
{
show = "";
text.setText("");
text1.setText("");
}
if (e.getSource() == jButton22)
{
show += "=";
text.setText(show);

char str1[] = new char[50];
char str2[] = new char[50];
float result = 0;

str1 = show.toCharArray();
str2 = TranSmit(str1);
result = Count(str2);

text1.setText((new String(str2)).trim());
text.setText("" + result);
show = "";
}
}

private void initComponents()
{
text.setBounds(10, 10, 270, 30);
text1.setBounds(10, 50, 270, 30);
jButton1.setBounds(10, 90, 60, 25);
jButton2.setBounds(80, 90, 60, 25);
jButton3.setBounds(150, 90, 60, 25);
jButton4.setBounds(220, 90, 60, 25);
jButton5.setBounds(10, 120, 60, 25);
jButton6.setBounds(80, 120, 60, 25);
jButton7.setBounds(150, 120, 60, 25);
jButton8.setBounds(220, 120, 60, 25);
jButton9.setBounds(10, 150, 60, 25);
jButton10.setBounds(80, 150, 60, 25);
jButton11.setBounds(150, 150, 60, 25);
jButton12.setBounds(220, 150, 60, 25);
jButton13.setBounds(10, 180, 60, 25);
jButton14.setBounds(80, 180, 60, 25);
jButton15.setBounds(150, 180, 60, 25);
jButton16.setBounds(220, 180, 60, 25);
jButton17.setBounds(150, 210, 60, 25);
jButton18.setBounds(220, 210, 60, 25);
jButton19.setBounds(10, 210, 60, 25);
jButton20.setBounds(80, 210, 60, 25);
jButton21.setBounds(10, 240, 60, 25);
jButton22.setBounds(80, 240, 60, 25);

jButton1.setText("1");
jButton2.setText("2");
jButton3.setText("3");
jButton4.setText("4");
jButton5.setText("5");
jButton6.setText("6");
jButton7.setText("7");
jButton8.setText("8");
jButton9.setText("9");
jButton10.setText("0");
jButton11.setText("+");
jButton12.setText("-");
jButton13.setText("*");
jButton14.setText("/");
jButton15.setText("(");
jButton16.setText(")");
jButton17.setText("[");
jButton18.setText("]");
jButton19.setText("{");
jButton20.setText("}");
jButton21.setText("CE");
jButton22.setText("=");

jButton1.addActionListener(this);
jButton2.addActionListener(this);
jButton3.addActionListener(this);
jButton4.addActionListener(this);
jButton5.addActionListener(this);
jButton6.addActionListener(this);
jButton7.addActionListener(this);
jButton8.addActionListener(this);
jButton9.addActionListener(this);
jButton10.addActionListener(this);
jButton11.addActionListener(this);
jButton12.addActionListener(this);
jButton13.addActionListener(this);
jButton14.addActionListener(this);
jButton15.addActionListener(this);
jButton16.addActionListener(this);
jButton17.addActionListener(this);
jButton18.addActionListener(this);
jButton19.addActionListener(this);
jButton20.addActionListener(this);
jButton21.addActionListener(this);
jButton22.addActionListener(this);

add(text);
add(text1);
add(jButton1);
add(jButton2);
add(jButton3);
add(jButton4);
add(jButton5);
add(jButton6);
add(jButton7);
add(jButton8);
add(jButton9);
add(jButton10);
add(jButton11);
add(jButton12);
add(jButton13);
add(jButton14);
add(jButton15);
add(jButton16);
add(jButton17);
add(jButton18);
add(jButton19);
add(jButton20);
add(jButton21);
add(jButton22);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
setBounds(300, 300, 300, 300);
setVisible(true);
}

public static void main(String args[])
{
new jisuanqi();
}
}

热心网友 时间:2023-10-08 15:28

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Calc extends JFrame
implements ActionListener {

private double firstNum = 0;
private double secondNum = 0;
private String sign;
private boolean isSecondNum = false;
private JTextField text = new JTextField(20);

public Calc() {
setLayout(new BorderLayout());
add(text, BorderLayout.NORTH);
add(getButtonPanel(), BorderLayout.CENTER);
}

public void actionPerformed(ActionEvent e) {
String str = e.getActionCommand();
if (str.equals("+") || str.equals("-") || str.equals("*") || str.equals("/")) {
firstNum = Double.parseDouble(text.getText());
text.setText("");
sign = str;
isSecondNum = true;
} else if (str.equals("=")) {
if (isSecondNum) {
secondNum = Double.parseDouble(text.getText());
double answer = 0;
if (sign.equals("+")) {
answer = firstNum + secondNum;
} else if (sign.equals("-")) {
answer = firstNum - secondNum;
} else if (sign.equals("*")) {
answer = firstNum * secondNum;
} else {
answer = firstNum / secondNum;
}
text.setText(String.valueOf(answer));
}
} else {
text.setText(text.getText() + str);
}
}

private JPanel getButtonPanel() {
String[] buttonName = {"7", "8", "9", "/",
"4", "5", "6", "*",
"1", "2", "3", "-",
"0", ".", "=", "+"};
JButton[] button = new JButton[buttonName.length];
JPanel p = new JPanel(new GridLayout(4, 4));
for (int i = 0; i < buttonName.length; i++) {
button[i] = new JButton(buttonName[i]);
button[i].addActionListener(this);
p.add(button[i]);
}
return p;
}

public static void main(String[] args) {
Calc calc = new Calc();
calc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
calc.pack();
calc.setVisible(true);
}
}
有没有人会用JAVA编程的啊?写一个简单的计算器,可以加减乘除就可以了...

import java.awt.BorderLayout;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JButton;import javax.swing.JFrame;import javax....

用Java编写一个简单的计算器界面,并且可以实现加减乘除计算,很简单一...

import java.awt.event.MouseListener;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;public class Calculator { public static void main(String[] args) { Frame f = new Frame("Calculator");final TextField tf = new TextField();Panel p = new Panel();f.setLayout...

JAVA制作一个简单的计算器。能实现两个数的加、减、乘、除四则运算...

import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.applet.*;public class Demo03 extends JApplet implements ActionListener {boolean i = true;private JButton num0 = new JButton("0");private JButton num1 = new JButton("1");private ...

求简单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; // 表示上一运算...

如何使用Java对象语言编写一个加减乘除计算器要有代码

下面文件名要为:JiSuanQi.java import java.awt.*;import java.awt.event.*;public class JiSuanQi { String s="",s1=null,s2=null;Frame f=new Frame("计算器");TextField tf=new TextField(30);Panel p1=new Panel();Panel p2=new Panel();Panel p3=new Panel();Button bt1=new ...

java里使用面向对象的思想编写一个计算器类(Calculator),可以实 ...

package calculate;import java.math.BigDecimal;import java.math.BigInteger;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Calculator { public static void main(String[] args) { System.out.println(calculate("x=1+2+3+4,y=1*2*3*4")); System.out...

用JAVA写一个计算器 要求有图形界面。简单的加减乘除,不要小数点运算...

private void handleC() // 初始化计算器的各种值 { text_double.setText("0");firstDigit = true;operator = "=";} private void handleNumber(String button) { if (firstDigit)//输入的第一个数字 { text_double.setText(button);} else if ((button.equals(".")) &amp;&amp; (text_doub...

如何用java编写一个简单的计算器,只要能进行最基本的加减乘除运算就可以...

简单的啊,我有个自己编的完美的,不过给你改成简单的吧。有注释。import java.awt.*;import javax.swing.*;import javax.swing.border.*;import java.awt.event.*;import java.text.*;public class Calculator extends JFrame implements ActionListener { int m=0,i,n=0; float sum=0,s1,s2,equ; Str...

用JAVA编写一个简单的计算器,要求如下:

以下是上图计算器的代码:package Computer;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Stack;import javax.swing.JApplet;i...

用JAVA制作一个简单计算器

用JAVA制作一个简单计算器 需求说明:写一个简单计算器程序,该计算器支持五种运算:加、减、乘、除和求余,分别用“+”、“-”、“*”、“/”及“%”表示。用户可以输入数值及运算符号,然后点击“计算”按钮,... 需求说明:写一个简单计算器程序,该计算器支持五种运算:加、减、乘、除和求余,分别用“+”...

vb编写简易计算器加减乘除代码 vb简单计算器加减乘除编程代码 利用c语言编写一个加减乘除计算器 vfp编写加减乘除计算器 vb编写加减乘除计算器图解 vb编写加减乘除计算器视频 vb计算器加减乘除代码 计算器如何计算加减乘除 c语言做计算器计算加减乘除
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎样设置苹果手机的应用分身 怎么判断家里有蟑螂窝 如何让蟑螂不靠近床 怎样判断是否有蟑螂窝 有什么办法不让睡觉打呼噜了 如何在哪里查询项目经理证书 excel双纵坐标怎么做 了解“中国白酒排名前100强”,选择一款放心的酒 淘宝签到领现金活动在哪里? 签到红包在哪领取啊? 烧火烤红薯算不算污染空气? 急!!对一个JAVA源代码加注释~~~ 编写程序来执行两个数字12和5的算术加法,乘法和除法(java程序)求源代码 分全拿出来了,Java 问题,两个很大的整型数相加 求一个用java数据结构做的一元稀疏多项式计算器 谁能帮我解释下这个java程序代码呀? JAVA程序,求具体程序,在线等,奖励会追加 用榨汁机榨出来的苹果汁,放在冰箱恒温里,几天内不变质? 求JAVA做的计算器完整代码,Applet实现。 求简单JAVA程序代码,能操作的,简单的计算器有计算功能+-*&#47;就行越简单越好!!!急!!! 苹果放在冰柜里再榨汁可行 用JAVA写计算器,运算符的出发代码怎么写? 苹果汁如何储存? 希望能做出一个,100以内加减法运算的java计算器的代码。 自制的苹果汁喝不完,放冰箱隔夜,明天再喝可以吗? 如何使用Java对象语言编写一个加减乘除计算器要有代码 自己榨的苹果汁能放多久? 急求JAVA简单加法程序代码 酸奶苹果榨汁放冰箱可以保存多久…? 求一个用JAVA编写的简易加法器,要求在字符界面完成 榨好的苹果汁一般放多久之后就不能喝了? JAVA网络编程一题,分全给,谢谢,急。 帮我解释下java计算器代码中的除法运算谢谢 JAVA编写一个完整的计数器类Count,写出源代码 BEEX笔记本怎么安装win7系统 玫瑰花有什么颜色? 玫瑰有哪些颜色? 玫瑰都有什么颜色? 玫瑰花有什么颜色的呢? 玫瑰有几种颜色 玫瑰有什么颜色? 玫瑰有几种颜色?分别叫什么? 玫瑰有几种颜色? 玫瑰花什么颜色? 玫瑰花有几种颜色分别代表什么意思 玫瑰花都有什么样颜色的? 玫瑰花有哪些颜色? 玫瑰有哪些颜色,样子,香味 玫瑰花都有什么颜色的? 原来的etc是用的储蓄卡,想换成信用卡,如何办理?请高手解答 ETC更换银行要等多久?