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

用Java编写一个简单的计算器程序

发布网友 发布时间:2022-04-29 19:25

我来回答

2个回答

热心网友 时间:2022-06-20 22:15

import java.awt.*;
import java.awt.event.*;

public class CalcAppDemo extends Frame{
private TextField t_result;
private Panel p_main; //主面板
private Panel p_num; //数字面板
private Panel p_oper; //操作符面板
private Panel p_show; //显示面板
private Button b_num[]; //数字按钮
private Button b_oper[]; //操作符面板

public CalcAppDemo(String title){
setTitle(title);
t_result = new TextField("0.0", 21);
p_main = new Panel();
p_num = new Panel();
p_oper = new Panel();
p_show = new Panel();
p_main.setLayout(new BorderLayout());
p_num.setLayout(new GridLayout(4, 3, 1, 1));
p_oper.setLayout(new GridLayout(4, 2, 1, 1));

b_num = new Button[12];
for(int i=0; i<9; i++)
{
b_num[i] = new Button(new Integer(i+1).toString());
}
b_num[9] = new Button("0");
b_num[10] = new Button("cls");
b_num[11] = new Button(".");
for(int i=0; i<12; i++)
{
p_num.add(b_num[i]);
}

b_oper = new Button[8];
b_oper[0] = new Button("+");
b_oper[1] = new Button("-");
b_oper[2] = new Button("*");
b_oper[3] = new Button("/");
b_oper[4] = new Button("pow");
b_oper[5] = new Button("sqrt");
b_oper[6] = new Button("+/-");
b_oper[7] = new Button("=");
for(int i=0; i<8; i++) //
{
p_oper.add(b_oper[i]);
}

t_result.setEditable(false);
p_show.add(t_result, BorderLayout.NORTH);
p_main.add(p_show, BorderLayout.NORTH);
p_main.add(p_num, BorderLayout.WEST);
p_main.add(p_oper, BorderLayout.EAST);
this.add(p_main, BorderLayout.CENTER);
setSize(400, 400);
setResizable(false);
pack();

this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
ButtonListener b1 = new ButtonListener();
for(int i=0; i<12; i++)
{
b_num[i].addActionListener(b1);
}
for(int i=0; i<8; i++)
{
b_oper[i].addActionListener(b1);
}
}

class ButtonListener implements ActionListener
{
private String lastOp; //存储上一此操作符
private String strVal; //存储数字对应的字符串
private double total; //总数
private double number; //存储新输入的数
private boolean firsttime; //判断是否第一次按下的是操作符按钮
private boolean operatorPressed;//判断是否已经按过操作符按钮

ButtonListener()
{
firsttime = true;
strVal = "";
}

//事件处理器
public void actionPerformed(ActionEvent e)
{
String s = ((Button)e.getSource()).getLabel().trim();

if(Character.isDigit(s.charAt(0)))
{//判断是操作数还是操作符
handleNumber(s);
}
else
{
calculate(s);
}
}

//判断是一元操作符还是二元操作符,并根据操作符类型做计算
void calculate(String op)
{
operatorPressed = true;

if(firsttime&&! isUnary(op))
{
total = getNumberOnDisplay();
firsttime = false;
}
if(isUnary(op))
{
handleUnaryOp(op);
}
else if(lastOp != null)
{
handleBinaryOp(lastOp);
}
if(! isUnary(op))
{
lastOp = op;
}
}

//判断是否一元操作符
boolean isUnary(String s)
{
return s.equals("=")
||s.equals("cls")||s.equals("sqrt")
||s.equals("+/-")||s.equals(".");
}

//处理一元操作符
void handleUnaryOp(String op)
{
if(op.equals("+/-"))
{//
number = negate(getNumberOnDisplay() + "");
t_result.setText("");
t_result.setText(number + "");
return;
}else if(op.equals("."))
{
handleDecPoint();
return;
}else if(op.equals("sqrt"))
{
number = Math.sqrt(getNumberOnDisplay());
t_result.setText("");
t_result.setText(number + "");
return;
}else if(op.equals("="))
{//
if(lastOp!= null && !isUnary(lastOp))
{
handleBinaryOp(lastOp);
}
lastOp = null;
firsttime = true;
return;
}else
{
clear();
}
}

//处理二元运算符
void handleBinaryOp(String op)
{
if(op.equals("+"))
{
total +=number;
}else if(op.equals("-"))
{
total -=number;
}else if(op.equals("*"))
{
total *=number;
}else if(op.equals("/"))
{
try
{
total /=number;
}catch(ArithmeticException ae){}
}else if(op.equals("pow"))
total = Math.pow(total, number);
//t_result.setText("");
lastOp = null;
// strVal = "";
number = 0;
t_result.setText(total + "");
}

//该方法用于处理数字按钮
void handleNumber(String s)
{
if(!operatorPressed)
{
strVal += s;
}else
{
operatorPressed = false;
strVal = s;
}
//
number = new Double(strVal).doubleValue();
t_result.setText("");
t_result.setText(strVal);
}

//该方法用于按下"."按钮
void handleDecPoint()
{
operatorPressed = false;
//
if(strVal.indexOf(".")<0)
{
strVal += ".";
}
t_result.setText("");
t_result.setText(strVal);
}

//该方法用于将一个数求反
double negate(String s)
{
operatorPressed = false;
//如果是一个整数,去掉小数点后面的0
if(number == (int)number)
{
s = s.substring(0,s.indexOf("."));
}

//如果无"-"增加在该数的前面
if(s.indexOf("-")<0)
{
strVal = "-" + s;
}
else
{
strVal = s.substring(1);
}
return new Double(strVal).doubleValue();
}

//将显示框中的值转换成Double
double getNumberOnDisplay()
{
return new Double(t_result.getText()).doubleValue();
}

//清除屏幕并设置所有的标识
void clear()
{
firsttime = true;
lastOp = null;
strVal = "";
total = 0;
number = 0;
t_result.setText("0");
}
}

public static void main(String[] args) {
CalcAppDemo c = new CalcAppDemo("简单的计算器程序");
c.setVisible(true);
}

}

热心网友 时间:2022-06-20 22:16

那就编啊!
用JAVA编写的科学计算器源代码

代码首先导入了`Scanner`类,用于从用户处获取输入。然后,在`main`方法中,创建了一个`Scanner`对象,用于读取用户的输入。程序通过一个无限循环来持续接收用户的输入,直到用户输入“quit”为止。在循环中,程序首先提示用户输入一个操作,然后读取用户的输入并将其分割为多个部分。接着,程序...

java怎样写一个简单的计算器

import java.util.Scanner;public class Calculator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);System.out.println("Enter first number:");double num1 = scanner.nextDouble();System.out.println("Enter second number:");double num2 = scanner.nex...

求JAVA编写的 简易计算器程序,附上注释

import java.awt.*;import java.awt.event.*;public class Calculator implements ActionListener { String s="",s1;double d1,d2;JFrame jf = new JFrame("小计算器by Graduate") ;JTextField tf = new JTextField();public void init()//实现计算器界面 { Container c=jf.getContentPane();...

1 简单计算器。请编写一个程序计算表达式:datal op data2的值。其中op...

import java.awt.*;import java.awt.event.*;public class Jsq extends JFrame implements ActionListener{ JTextField txt = new JTextField(15);JPanel p = new JPanel();JButton b0,b1,b2,b3,b4,b5,b6,b7,b8,b9;JButton bAdd,bDif,bMul,bDiv,bPoint,bEqual,bPer,bFen,bAc,bBack;bo...

用JAVA编写一个计算器

// 计算器数字按钮定义面板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...

求简单java写计算器代码加减乘除

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 ...

java编写最简单的计算器,要求:需要手动输入“+”“-”等运算符,当输入...

import java.util.Scanner;public class SimpleCalculator {public static void main(String[] args) {int first =0; //第一个数int second = 0; //第二个数int result = 0;char opt = 0; //运算符Scanner scanner = new Scanner(System.in);System.out.println("请输入第一个数:");...

java编一个计算器的代码

setTitle("计算器");setJMenuBar(menuBar);setSize(new Dimension(400, 280));this.getContentPane().add(new Allpanel());this.addWindowListener (new WindowAdapter() { public void windowClosing(WindowEvent e) { CounterFrame.this.windowClosed();} } );} protected void windowClosed() {...

用java编得计算器程序软件和源代码

java计算器源程序java计算器import java.awt.*; import javax.swing.*; import java.awt.event.*; class calculation extends JFrame {public calculation() /*构造方法*/ {super("计数器"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); initTextPanel(); /*文本框*/ initControlPanel(); ...

JAVA 编写计算器 要代码最简单的

学java的时候自己编的,很简单,能够连续输入计算式后进行计算import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.text.NumberFormat;import java.util...

用java编写简单的计算器程序 用java编写一个简单的计算器 用java写一个计算器的程序 java编写计算器程序的设计过程 编写一个简单计算器程序 编写一个简单的计算器 用java实现一个计算器程序 用java编写一个计算器 编写一个计算器程序
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
领组词有哪些词语有 推荐点自己个人认为不错的 简洁点的手机铃声 还有短信音 重点是... 我这个配置能带动GTX760吗 请问我的电脑配置 是配GTX660还是GTX760 电源室安钛克 VP450P_百 ... 请问我这样的配置能带起GTX760不 我现在电脑想加显卡,目前看中GTX760,我这样的配置能配这显卡吗? 以下配置能上GTX760显卡吗 为什么四氧化三铁标不出化合价 ...下铅丹(用X表示)与硝酸能发生反应:X+4HNO3═PbO2+2 四氧化三铁(Fe 3 O 4 )中铁元素的化合价有+2和+3价,其化学式可改写为F... 用java编写一个简单计算器 java实现一个简单的计算器界面,加上适当的事件处理,完成计算功能。 钢丝网屋面用什么固定钢丝 我的kindle因为长时间不用,电池放电过量开不了机。谁知道怎么办? 用java编写简单计算器 钢丝网如何固定在墙面上怎么操作- 问一问 用Java做一个简单的计算器 亚马逊kindle3无法正常开机了,怎么办???急死了! 用JAVA编写一个简单的计算器,要求如下 kindle死机怎么办 用java实现一个简单的计算器。 kindle没电后,充了一段时间,但无法开机怎么办? 用Java编写一个简单的计算器界面,并且可以实现加减乘除计算,很简单一个就可以了,还需要一个归零按 kindle死机不动了怎么办 kindle半年没用,充电两小时后仍开不了机,还是显示电池的那个界面,连接电脑没反应!,怎么办???? kindle 因为长时间不用开不开机怎么办??充点也没用 中间有摔过一下不过很轻应该没影响吧 kindle阅读器出现以下情况无法开机怎么办? 、使用JAVA语言编写一个简易的计算器 android开发——简易计算器的设计报告 为什么kindle开不了机 kindle卡机了而且长按不能重启也不能输密码怎么办? JAVA实训的计算器? Kindle死机了重启,一直在重启页面怎么办 用JAVA编写一个简单计算器???界面做出来了。 铁丝网怎么粘在混凝土墙上? 如何用java编写一个简单的计算器,只要能进行最基本的加减乘除运算就可以... 吊顶钢丝网是怎么固定 防水卷材上固定钢丝网能用钉子吗 墙面水平缝挂钢丝网保温钉间距一般为多少 填充墙和剪力墙交接处需要挂钢丝网,钢丝网在剪力墙上如何固定呢? 钢结构钢丝网如何固定 地面抹灰中加防静电金属网,这个网需要打钉固定吗? 黄冈遗爱湖名字的由来 遗爱湖公园的三版传说 遗爱湖公园的简单介绍 遗爱湖公园的介绍 遗爱湖公园的与苏东坡 遗爱湖公园的相关解读 遗爱湖公园的相关治理 遗爱湖公园的相关报道