j**a:编写一个计算器小程序,要求可以做加减乘除运算

铁哥727 2024-05-30 15:15:30
最佳回答
kankan我的import j**a.awt.borderlayout;import j**a.awt.gridlayout;import j**a.awt.event.actionevent;import j**a.awt.event.actionl**tener;import j**a.math.bigdecimal;import j**ax.swing.**utton;import j**ax.swing.jframe;import j**ax.swing.jpanel;import j**ax.swing.jtextfield;public class testcalc implements actionl**tener { jframe jf = new jframe("计算器"); jpanel jp = new jpanel(); jtextfield jtf = new jtextfield("0.", 200); **utton[] ** = new **utton[20]; private int tag = 0; private double a; private double b; private string operator; stringbuilder **1 = new stringbuilder(); stringbuilder **2 = new stringbuilder(); public testcalc() { jf.add(jtf, borderlayout.north); // jtf.requestfocus(); jtf.seteditable(false); jtf.setcaretposition(jtf.gettext().length() - 1); jf.add(jp); jp.setlayout(new gridlayout(5, 4, 4, 4)); string[] str = { "back", "ce", "c", "+", "7", "8", "9", "-", "4", "5", "6", "*", "1", "2", "3", "/", "0", "+/-", ".", "=" }; int i = 0; for (i = 0; i < str.length; i++) { **[i] = new **utton(str[i]); jp.add(**[i]); **[i].addactionl**tener(th**); } jf.setsize(300, 240); // jf.setlocation(300,200); jf.setlocationrelativeto(**); jf.setv**ible(true); // jf.pack();//自动调整大小; jf.setresizable(false);// 不允许别人调大小; jf.setdefaultcloseoperation(jframe.exit_on_close); } public static void main(string[] args) { testcalc tc = new testcalc(); } public void actionperformed(actionevent e) { string command = e.getactioncommand(); if (command.matches("^[[0-9].]$")) { if (tag == 0) { **1.append(command); jtf.settext(**1.substring(0)); } else { **2.append(command); jtf.settext(**2.substring(0)); } } else if (command.matches("^[-/*+]$")) { tag = 1; operator = command; } else { if (command.matches("=")) { string str1 = **1.substring(0); string str2 = **2.substring(0); if (str1 == **) { a = 0.0; } else { a = double.parsedouble(str1); } if (str2 == **) { b = 0.0; } else { b = double.parsedouble(str2); } if (operator.equals("+")) { jtf.settext("" + (a + b)); } else if (operator.equals("-")) { bigdecimal bd1 = new bigdecimal(double.tostring(a)); // 必须使用string做参数才可以精确运算 bigdecimal bd2 = new bigdecimal(double.tostring(b)); double yu1 = bd1.subtract(bd2).doublevalue(); jtf.settext("" + (yu1)); } else if (operator.equals("*")) { jtf.settext("" + (a * b)); } else if (operator.equals("/")) { bigdecimal bd1 = new bigdecimal(double.tostring(a)); // 必须使用string做参数才可以精确运算 bigdecimal bd2 = new bigdecimal(double.tostring(b)); double yu1 = bd1.divide(bd2).doublevalue(); jtf.settext("" + yu1); } tag = 0; **1.delete(0, **1.length()); **2.delete(0, **2.length()); } else if (command.matches("c")) { tag = 0; **1.delete(0, **1.length()); **2.delete(0, **2.length()); jtf.settext("0."); jtf.setcaretposition(jtf.gettext().length() - 1); } else if (command.matches("ce")) { tag = 0; **2.delete(0, **2.length()); jtf.settext(**1.substring(0)); } else if (command.matches("back")) {//back功能键的实现; if (tag == 0) { **1.deletecharat(**1.length() - 1); jtf.settext(**1.substring(0)); } else { **2.deletecharat(**2.length() - 1); jtf.settext(**2.substring(0)); } } else if (command.matches("\\+/-")) { if (tag == 0) { if(**1.substring(0,1).equals("-")){ **1.replace(0,1,"+"); }else{ **1.insert(0, "-"); } jtf.settext(**1.substring(0)); } else { if(**2.substring(0,1).equals("-")){ **2.replace(0,1,"+"); }else{ **2.insert(0, "-"); } jtf.settext(**2.substring(0)); } }else { } } }} import j**ax.swing.*;import j**a.awt.*;import j**a.awt.event.*;public class calculator extends jframe implements actionl**tener{private static final long serialversionuid = 8199443193151152362l;private **utton bto_s=new **utton("sqrt"),bto_zf=new **utton("+/-"),bto_ce=new **utton("ce"),bto_c=new **utton("c"),bto_7=new **utton("7"),bto_8=new **utton("8"),bto_9=new **utton("9"),bto_chu=new **utton("/"),bto_4=new **utton("4"),bto_5=new **utton("5"),bto_6=new **utton("6"),bto_cheng=new **utton("*"),bto_1=new **utton("1"),bto_2=new **utton("2"),bto_3=new **utton("3"),bto_jian=new **utton("-"),bto_0=new **utton("0"),bto_dian=new **utton("."),bto_deng=new **utton("="),bto_jia=new **utton("+");**utton button[]={bto_s,bto_zf,bto_ce,bto_c,bto_7,bto_8,bto_9,bto_chu,bto_4,bto_5,bto_6,bto_cheng,bto_1,bto_2,bto_3,bto_jian, bto_0,bto_dian,bto_deng,bto_jia};private jtextfield text_double;// = new jtextfield("0");private string operator = "="; //当前运算的运算符private boolean firstdigit = true; // 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字private double resultnum = 0.0; // 计算的中间结果private boolean operatevalidflag = true; //判断操作是否合法public calculator(){ super("calculator"); th**.setbounds(300, 300, 300, 300); th**.setresizable(false); th**.setbackground(color.orange); th**.setdefaultcloseoperation(exit_on_close); th**.getcontentpane().setlayout(new borderlayout());//设置布局 text_double=new jtextfield("0",20);//设置文本区 text_double.sethorizontalalignment(jtextfield.right);//设置水平对齐方式未右对齐 th**.getcontentpane().add(text_double,borderlayout.north);//将文本区添加到content北部 jpanel panel=new jpanel(new gridlayout(5,4));//在内容窗口添加一个网格布局 th**.getcontentpane().add(panel);//添加panel面板 for(int i=0;i<button.length;i++)//在面板上添加按钮 panel.add(button[i]); for(int i=0;i<button.length;i++) button[i].addactionl**tener(th**);//为按钮注册 text_double.seteditable(false);//文本框不可编辑 text_double.addactionl**tener(th**);// th**.setv**ible(true);}public void actionperformed(actionevent e)//{ string c= e.getactioncommand();//返回与此动作相关的命令字符串。 system.out.println("##########command ** "+c); if(c.equals("c")){ handlec(); //用户按了“c”键 } else if (c.equals("ce")) // 用户按了"ce"键 { text_double.settext("0"); } else if ("0123456789.".indexof(c) >= 0) // 用户按了数字键或者小数点键 { handlenumber(c); // handlezero(zero); } else //用户按了运算符键 { handleoperator(c); }}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(".")) && (text_double.gettext().indexof(".") < 0))//输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面 //如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引;如果它不作为一个子字符串出现,则返回 -1 { text_double.settext(text_double.gettext() + "."); } else if (!button.equals("."))// 如果输入的不是小数点,则将数字附在结果文本框的后面 { text_double.settext(text_double.gettext() + button); }// 以后输入的肯定不是第一个数字了 firstdigit = false; }private void handleoperator(string button) { if (operator.equals("/")) {// 除法运算// 如果当前结果文本框中的值等于0 if (getnumberfromtext() == 0.0){// 操作不合法 operatevalidflag = false; text_double.settext("除数不能为零"); } else { resultnum /= getnumberfromtext(); } } else if (operator.equals("+")){// 加法运算 resultnum += getnumberfromtext(); } else if (operator.equals("-")){// 减法运算 resultnum -= getnumberfromtext(); } else if (operator.equals("*")){// 乘法运算 resultnum *= getnumberfromtext(); } else if (operator.equals("sqrt")) {// 平方根运算 if(getnumberfromtext()<0){ operatevalidflag = false; text_double.settext("被开方数不能为负数");} else resultnum = math.sqrt(resultnum); } else if (operator.equals("+/-")){// 正数负数运算 resultnum = resultnum * (-1); } else if (operator.equals("=")){// 赋值运算 resultnum = getnumberfromtext(); } if (operatevalidflag) {// 双精度浮点数的运算 long t1; double t2; t1 = (long) resultnum; t2 = resultnum - t1; if (t2 == 0) { text_double.settext(string.valueof(t1)); } else { text_double.settext(string.valueof(resultnum)); } } operator = button; //运算符等于用户按的按钮 firstdigit = true; operatevalidflag = true;}private double getnumberfromtext() //从结果的文本框获取数字{ double result = 0; try { result = double.valueof(text_double.gettext()).doublevalue(); // valueof()返回表示指定的 double 值的 double 实例 } catch (numberformatexception e){ } return result; }public static void main(final string[] args) {new calculator();}} 20210311
汇率兑换计算器

类似问答
  • 用vc++编写计算器问题
    • 2024-05-30 01:11:16
    • 提问者: 未知
    主要程序代码:edit1dlg.cpp文件void cedit1dlg::onchangeadd1() //加数{ // todo: if th** ** a richedit control, the control will not // send th** notification unless you override the cdialog::oninitdialog() // func...
  • 求一个可以计算房贷款18年的提前还款计算器!
    • 2024-05-30 11:02:52
    • 提问者: 未知
    给您一个表格,上面商贷、住宅、公积金都能算出来,公式:贷款金额等额本息=月供
  • 一个rsa算法的加密运算,需要完整的演算过程。
    • 2024-05-30 01:08:08
    • 提问者: 未知
    我来回答你可以闭帖了,呵呵看你题目的意思就是打算把republic这个词按照你的方法装换成数字例如是:xp=3,q=11n=p*q=33t=(p-1)*(q-1)=20取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1)我们可以取e=7要求d*e%t==1(d*e除以t取余等于1),我们可以找到d=3此时我们就有了三个数n=33d=3 公钥e=7 私钥设消息为数m (m <...
  • 用数组的方法编写一个j**a程序
    • 2024-05-30 03:48:58
    • 提问者: 未知
    依次输入某股票近10天中每日收盘价,计算收盘价的平均价格后,依次输入所有高于或等于平均价格的那些收盘价。各位j**a高手帮帮忙呀!匿名用户 1级 import j**a.util.*;...
  • 请大神帮我看一下这个j**a计算器的程序需要什么开发环境以及相应配置,涉及到的关键j**a api
    • 2024-05-30 08:26:06
    • 提问者: 未知
    环境不是太重要,一般都是用j**a jdk1.6或者1.7加上eclipse或者myeclipse。关键的api主要就是 j**a.awt.*;图形界面的api j**a.awt.event.*;图形界面当中事件响应api
  • 求大神帮忙写一条51单片机的计算器c语言程序
    • 2024-05-30 15:28:36
    • 提问者: 未知
    北海1040工程银行支持是怎么一回事?北海1040工程银行支持是怎么一回事?愿意帮助别人,并在需要的时候希望自己得到别人的帮助,可以说是人之常情。而真正豁达睿智得人,却善于从自己身上找原因,不会一味抱怨别人。我觉得,不能盲目,即使能做,也要考虑自己的因素。能不能邀约去人,有没有后续资金,...
  • 计算机编程主要j**a 选择amd还是intel?
    • 2024-05-30 17:11:30
    • 提问者: 未知
    看到最近4800生产力给力 性价比又高 但是担心amd会出现一些小问题 专业编程的话选择amd会有啥风险嘛?
  • 求一房贷计算器j**a源程序
    • 2024-05-30 20:34:01
    • 提问者: 未知
    打了个电话给农行的客服(收费的),终于知道公式了。.好麻烦的公式...浪费了我15分钟的电话费。 还有在写公式的过程中遇到了计算x的y次方..谁知道j**a里怎么计算啊???我是自己写了个方法。.感觉有点麻烦...注意的是利率.由于开始写的时候没考虑到小数点.所以这里都是按整数算..比如利率是7.5%就写成750..呵呵。.不直到她公式给错了还是我没听清楚.好象公式有些不准。.明天我去银行问下。...
  • 第一个计算机语言编程程序是怎么做出来的?
    • 2024-05-30 05:49:54
    • 提问者: 未知
    每个电路需要一些二进制的输入,通过二进制指令代码来选择要激活的电路。在早期,人们通过切换开关来操作。因此...为此,她说她需要一个罗盘,以便能够跨越山脉,河流和山谷。...
  • 185减25乘以6加124,如果运算顺序变为先算减法,再算加法,
    • 2024-05-30 13:21:00
    • 提问者: 未知
    185-25x6+124=(185-25)x(6+124)
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。