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

Java程序编写一个计算器类,要求实现加、减、乘、除运算,注意在进行除法运算时,如果除数为0,

发布网友 发布时间:2022-05-20 20:57

我来回答

2个回答

热心网友 时间:2023-11-24 18:35

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Caculator extends JFrame implements KeyListener{ //构造Caculator类
private Container content;//构造容器
private JButton bCancel; //清除按钮
private JButton[] b=new JButton[16]; //构造按钮数组
private char LastOp; //操作符号
private boolean Countable; //用于判断是否可计算
private String KeyLabel[]={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};
private StringBuffer str;
private JPanel KeyPanel,TextPanel; //按键面板,结果面板
private JTextArea tResult; //用于显示结果的文本域
private double x=0,y=0; //操作数
public Caculator(){
setTitle("袖珍计算器");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
content =getContentPane(); //初始化一个容器
content.setLayout(new BorderLayout()); //设置容器的布局方式
KeyPanel=new JPanel();
TextPanel=new JPanel();
TextPanel.setLayout(new FlowLayout()); //设置TextPanel面板的布局方式
KeyPanel.setLayout(new GridLayout(4,4)); //设置KeyPanel面板的布局方式
tResult=new JTextArea(1,15); //实例化一个JTextArea类
tResult.setEditable(false); //将tResult设置为不可编辑
tResult.setText("0"); //文本域显示为0
tResult.addKeyListener(this); //添加键盘*
str=new StringBuffer(); //实例化一个字符串缓冲区

ButtonListener btnListener = new ButtonListener(); //实例化一个ButtonListener类的*
for(int i=0;i<16;i++){
b[i] = new JButton(KeyLabel[i]);
b[i].addActionListener(btnListener); //添加ButtonListener类*
b[i].addKeyListener(this); //添加键盘*
KeyPanel.add(b[i]);
}
bCancel=new JButton("C");
bCancel.addActionListener(btnListener); //添加ButtonListener类*
bCancel.addKeyListener(this); //添加键盘*
bCancel.setBackground(Color.RED);
LastOp='!'; //若LastOp的值不为'+' '-' '*' '/'中的一个,则约定它的值是 '!'
Countable=false;

TextPanel.add(tResult);
TextPanel.add(bCancel);
content.add("North",TextPanel);
content.add("Center",KeyPanel);
pack();
setResizable(false);
setVisible(true);
}
class ButtonListener implements ActionListener //构造*
{
public void actionPerformed(ActionEvent e) {
String s = ((JButton)e.getSource()).getText().trim(); //得到用户按下的按钮上的文本
char c = s.charAt(0); //得到s中索引为0的字符

if(c == 'C') //选择按钮C
{
tResult.setText("0");
str.setLength(0);
LastOp = '!';
Countable = false;
x = 0;
y = 0;
return;
}


if(c == '.') //选择输入小数点
{
if( tResult.getText().trim().indexOf(".") != -1) return;
else
{ str.insert(str.length(),".");
tResult.append(".");
return;
}
}
if(c == '+'||c == '-'||c == '*'||c == '/'||c == '=') //按加减乘除或等号键
{
Caculate(c);
return;
}

//剩下的数字键
tResult.setText(str.append(s).toString());
Countable=true;
}
}

//实现KeyListener*
public void keyTyped(KeyEvent ek)
{
char c = ek.getKeyChar(); //获取键盘上按的数字键
if(c=='1'||c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='7'||c=='8'||c=='9'||c=='0')
{
tResult.setText(str.append(c).toString());
Countable=true;
return;
}
if(c =='.') //按小数点
{
if( tResult.getText().trim().indexOf(".") != -1) return;
else
{ str.insert(str.length(),".");
tResult.append(".");
return;
}
}

if((int)c == KeyEvent.VK_DELETE ) //按delete键
{
tResult.setText("0");
str.setLength(0);
LastOp = '!';
Countable = false;
x = 0;
y = 0;
return;
}
if(c == '+'||c == '-'||c == '*'||c == '/'||c == '=') //按加减乘除或等号键
{
Caculate(c);
return;
}
}
public void keyPressed(KeyEvent ek) {}
public void keyReleased(KeyEvent ek) {}
public void Caculate(char c)
{
if(c == '+') //按加号键
{
Add();
return;
}

if( c == '-') //按减号键
{
Minus();
return;
}
if(c == '*') //按乘号键
{
Mul();
return;
}
if(c == '/') //按除号键
{
Div();
return;
}
if(c == '=') //按等号键
{
Equal();
return;
}
}
public void Add(){ //加方法
if(Countable==true && LastOp != '!') //判断是否进行运算
{
y = Double.parseDouble(tResult.getText().trim());
switch(LastOp)
{
case '+' : x = x+y; break;
case '-' : x = x-y; break;
case '*' : x = x*y; break;
case '/' :if(y != 0) x = x/y;
else
{
tResult.setText("除数不能为0");return;
}
}
tResult.setText(""+x);
Countable = false;
}
else x = Double.parseDouble(tResult.getText().trim());
str.setLength(0);
y = 0;
LastOp = '+';
return ;
}
public void Minus(){ //减方法
if(Countable==true && LastOp != '!') //判断是否进行运算
{
y = Double.parseDouble(tResult.getText().trim());
switch(LastOp)
{
case '+' : x = x+y; break;
case '-' : x = x-y; break;
case '*' : x = x*y; break;
case '/' :if(y != 0) x = x/y;
else
{
tResult.setText("除数不能为0");return;
}
}
tResult.setText(""+x);
Countable = false;
}
else x = Double.parseDouble(tResult.getText().trim());
str.setLength(0);
y = 0;
LastOp = '-';
return ;
}
public void Mul(){ //乘方法
if(Countable==true && LastOp != '!') //判断是否进行运算
{
y = Double.parseDouble(tResult.getText().trim());
switch(LastOp)
{
case '+' : x = x+y; break;
case '-' : x = x-y; break;
case '*' : x = x*y; break;
case '/' :if(y != 0) x = x/y;
else
{
tResult.setText("除数不能为0");return;
}
}
tResult.setText(""+x);
Countable = false;
}
else x = Double.parseDouble(tResult.getText().trim());
str.setLength(0);
y = 0;
LastOp = '*';
return ;
}
public void Div() //除方法
{
if(Countable==true && LastOp != '!') //判断是否进行运算
{
y = Double.parseDouble(tResult.getText().trim());
switch(LastOp)
{
case '+' : x = x+y; break;
case '-' : x = x-y; break;
case '*' : x = x*y; break;
case '/' :if(y != 0) x = x/y;
else
{
tResult.setText("除数不能为0");return;
}
}
tResult.setText(""+x);
Countable = false;
}
else x = Double.parseDouble(tResult.getText().trim());
str.setLength(0);
y = 0;
LastOp = '/';
return ;
}
public void Equal() //求结果的方法
{
y = Double.parseDouble(tResult.getText().trim());
switch(LastOp)
{
case '+' : x = x+y; break;
case '-' : x = x-y; break;
case '*' : x = x*y; break;
case '/' :if(y != 0) x = x/y;
else
{
tResult.setText("除数不能为0");return;
}
}
tResult.setText(""+x);
Countable=false;
return;
}
public static void main(String args[])
{
Caculator cal=new Caculator();
}
}

追问能否给一个简单的计算机程序呢

追答public class Hello{
public static void main(String[] args){
java.util.Scanner sc = new java.util.Scanner(System.in);
try{
System.out.println("请输入要运算的第一个数..");
float f1 = sc.nextFloat();
System.out.println("输入运算符+ - * /(默认不输入为+).");
char fu = '+';
//String fuhao = next();
try{
char[] zhuan = sc.next().toCharArray();
fu = zhuan[0];
}catch(Exception e){System.out.println("运算符输入错误");}
System.out.println("请输入要运算的第二个数..");
float f2 = sc.nextFloat();
switch(fu){
case '+':
System.out.println("加法:" + (f1 + f2));
break;
case '-':
System.out.println("减法:" + (f1 - f2));
break;
case '/':
if(f2 == 0){
System.out.println("被除数不能为0");
}else{
System.out.println("除法:" + (f1 / f2));
}
break;
case '*':
System.out.println("乘法:" + (f1 * f2));
break;
default :
System.out.println("不存在的符号");
}

}catch(Exception e){System.out.println("请输入数字或小数");}
}
}

热心网友 时间:2023-11-24 18:35

用Java定义一个类,实现加减乘除计算功能,把结果输出?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
财务中什么叫加计扣除 税务上什么叫加计扣除 什么叫加记扣除 如何制定差旅费标准? 夫江宁众彩家禽批发市场怎么坐公交 南京花鸟市场究竟是一处如何经营的市场 关于mp4\psp看电子书txt的问题 驾驶证吊销后如何重新考证? 嘴唇下方属于危险三角区吗?不小心碰到了长在上面的疖子,用餐巾纸... 你好,我上个星期长了个疖子,在两个锁骨中间,牙膏真管用啊? 考交规是90分及格还是60分及格 平时成绩占40%,期末成绩占60%。 平时成绩有90分,那么期末考试成绩最少要考多少分才能及格啊 你知道哪些可以在寝室做的甜点零食小吃? 90分物理 几分合格 四个多月的美短银渐层嘴巴臭怎么回事,求教!! 九十分的试卷多少分及格? 加菲猫配英短银渐层好吗? 英短渐层小猫什么时候可以变颜色 帮忙看看我这只是不是银渐层啊品相怎么样,值多少钱?眼睛长大会变色嘛&#128514; 英短银渐层,长大毛色会变浅吗? 银渐层折耳鼻子几个月变色 NGA的标准是什么。。。 儿童换牙后牙齿又松动为何 盘铁球和核桃哪个好 泉州北师大附中怎么样? 石家庄师大附属实验中学怎么样?(桥西的) 深师大附中南山校区如何 师大附中外国语学校怎么样? 腋下有淋巴结怎么办 有腋下淋巴结就是癌么。 编程序实现一个简单的计算器;(能实现正整数的加减乘除即可)VB的 请问成绩如果在90分±5分为及格是什么意思 Calvin Klein Jeans这个牌子的裤子怎么样啊?好贵哦 Calvin Klein休闲裤后面全都有皮标么? 我准备在美国买calvin klein jeans 的裤子,但是关于码数的问题,纠结中,, calvin klein jeans的牛仔裤贵不贵 大致价位在多少 CK(Calvin Klein)有没有出过牌子是&quot;CK39&quot;的裤子? Calvin Klein天猫官方旗舰店卖假货,黑心商家去死吧 裤头上印有CalvinKlein的牌子 我挂上我自己注册的商标吊牌销售算侵权吗? Calvin Klein 主要是经营哪些商品啊 电话号码前面带括号是座机吗 沙滩归属于什么部门管理? 滩涂沙滩属国家所有还是集体所有? 滩涂沙滩属国家所有还是集体所有? 从近海沙滩取水属哪部门管辖 沙滩文化的概况 盘锦红海滩湿地旅游度假区属于什么单位 公安县比较大的沙滩 为什么有些网站的域名前没www? 谈谈你对&quot;医学是一门需要博学的人道职业&quot; 的理解和认识