一个java计算器,请帮我看看哪里有不足和改进之处

问题描述

packagecom.core;importjavax.swing.*;importjava.awt.*;importstaticcom.js.util.SwingConsole.*;publicclassMyCalextendsJFrame{staticTextPaneltp=newTextPanel(newBorderLayout());privateButtonPanelbp=newButtonPanel(newGridLayout(4,4,2,2));publicMyCal(){add(tp,BorderLayout.NORTH);add(bp,BorderLayout.CENTER);}publicstaticvoidmain(String[]args){run(newMyCal(),400,350);}}packagecom.core;importjava.awt.event.*;importjava.util.ArrayList;importcom.js.util.*;importjavax.swing.JButton;importjavax.swing.JOptionPane;publicclassManyListeners{privateStringBuildertotalNum=newStringBuilder();privateBooleanflagNum=false;privateBooleanflagPoint=false;privateStack<Character>stackErrCom=newStack<Character>();privateArrayList<Float>af=newArrayList<Float>();classNumberListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){if(false==flagNum)totalNum.delete(0,20);flagNum=true;Stringname=((JButton)e.getSource()).getText();totalNum.append(name);MyCal.tp.text.setText(totalNum.toString());}}privatevoidoperatorLogic(Characterc,Strings){try{af.add(newFloat(totalNum.toString()));}catch(NumberFormatExceptionnfe){JOptionPane.showMessageDialog(null,"先按数字键并且不要连续按","吓死你",JOptionPane.ERROR_MESSAGE);return;}stackErrCom.push(c);MyCal.tp.text.setText(s);totalNum.delete(0,20);flagPoint=false;}classPlusListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){operatorLogic('+',"+");}}classDivideListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){operatorLogic('/',"/");}}classMultiplyListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){operatorLogic('*',"*");}}classMinusListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){operatorLogic('-',"-");}}classEqualsListenerimplementsActionListener{privateStringfiltrate(Floatf1){Integern1=f1.intValue();Floatfn1=n1.floatValue();if(f1-fn1==0){returnn1.toString();}else{returnf1.toString();}}publicvoidactionPerformed(ActionEvente){CharacterADD='+';CharacterDIVIDE='/';CharacterMUL='*';CharacterMIN='-';FloattotalF=0.0f;Stringresult=null;af.add(newFloat(totalNum.toString()));totalNum.delete(0,20);while(!stackErrCom.empty()){if((stackErrCom.peek()).equals(ADD)){totalF=af.get(0)+af.get(1);af.set(1,totalF);af.remove(0);}if((stackErrCom.peek()).equals(DIVIDE)){totalF=af.get(0)/af.get(1);af.set(1,totalF);af.remove(0);}if((stackErrCom.peek()).equals(MUL)){totalF=af.get(0)*af.get(1);af.set(1,totalF);af.remove(0);}if((stackErrCom.peek()).equals(MIN)){totalF=af.get(0)-af.get(1);af.set(1,totalF);af.remove(0);}stackErrCom.pop();}result=filtrate(totalF);MyCal.tp.text.setText(result);flagPoint=false;af.clear();totalNum.append(result);flagNum=false;}}classPointListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){if(flagNum&&!flagPoint){totalNum.append(".");MyCal.tp.text.setText(totalNum.toString());flagPoint=true;}else{try{thrownewPointException("小数点的烦恼");}catch(PointExceptione1){JOptionPane.showMessageDialog(null,"先按数字键并不能按下多个小数点","吓死你",JOptionPane.ERROR_MESSAGE);}}}}privateclassPointExceptionextendsException{publicPointException(){}publicPointException(Stringstr){}}}packagecom.core;importjavax.swing.*;importjava.awt.*;publicclassButtonPanelextendsJPanel{privateJButtonb1=newJButton("1"),b2=newJButton("2"),b3=newJButton("3"),b4=newJButton("4"),b5=newJButton("5"),b6=newJButton("6"),b7=newJButton("7"),b8=newJButton("8"),b9=newJButton("9"),b0=newJButton("0"),bPlus=newJButton("+"),bMinus=newJButton("-"),bMultiply=newJButton("*"),bDivide=newJButton("/"),bEquals=newJButton("="),bPoint=newJButton(".");privateFontfont=newFont("ArialBold",Font.BOLD,16);privateFontfont1=newFont("ArialBold",Font.BOLD,22);privateManyListenersml=newManyListeners();privateManyListeners.NumberListenernl=ml.newNumberListener();privateManyListeners.PlusListenerpl=ml.newPlusListener();privateManyListeners.EqualsListenerel=ml.newEqualsListener();privateManyListeners.PointListenerpol=ml.newPointListener();privateManyListeners.DivideListenerdl=ml.newDivideListener();privateManyListeners.MultiplyListenermul=ml.newMultiplyListener();privateManyListeners.MinusListenermil=ml.newMinusListener();publicButtonPanel(GridLayoutgl){super(gl);add(b1);add(b2);add(b3);add(b4);add(b5);add(b6);add(b7);add(b8);add(b9);add(b0);add(bPlus);add(bMinus);add(bMultiply);add(bDivide);add(bEquals);add(bPoint);b1.setFont(font);b2.setFont(font);b3.setFont(font);b4.setFont(font);b5.setFont(font);b6.setFont(font);b7.setFont(font);b8.setFont(font);b9.setFont(font);b0.setFont(font);bPlus.setFont(font1);bMinus.setFont(font1);bDivide.setFont(font1);bEquals.setFont(font1);bPoint.setFont(font1);bMultiply.setFont(font1);b1.addActionListener(nl);b2.addActionListener(nl);b3.addActionListener(nl);b4.addActionListener(nl);b5.addActionListener(nl);b6.addActionListener(nl);b7.addActionListener(nl);b8.addActionListener(nl);b9.addActionListener(nl);b0.addActionListener(nl);bPlus.addActionListener(pl);bEquals.addActionListener(el);bPoint.addActionListener(pol);bDivide.addActionListener(dl);bMultiply.addActionListener(mul);bMinus.addActionListener(mil);}}packagecom.core;importjavax.swing.*;importjava.awt.*;publicclassTextPanelextendsJPanel{staticJTextFieldtext=newJTextField();privateFontfont2=newFont("ArialBold",Font.BOLD,22);publicTextPanel(BorderLayoutbl){super(bl);text.setEditable(false);text.setHorizontalAlignment(JTextField.RIGHT);text.setFont(font2);add(text);}}packagecom.js.util;importjava.util.LinkedList;publicclassStack<T>{privateLinkedList<T>storage=newLinkedList<T>();publicvoidpush(Tv){storage.addFirst(v);}publicTpeek(){returnstorage.getLast();}publicTpop(){returnstorage.removeLast();}publicbooleanempty(){returnstorage.isEmpty();}publicStringtoString(){returnstorage.toString();}}///:~packagecom.js.util;importjavax.swing.*;publicclassSwingConsole{publicstaticvoidrun(finalJFramef,finalintwidth,finalintheight){SwingUtilities.invokeLater(newRunnable(){@Overridepublicvoidrun(){//TODOAuto-generatedmethodstubf.setTitle(f.getClass().getSimpleName());f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setSize(width,height);f.setVisible(true);f.setResizable(false);}});}}

解决方案

解决方案二:
请帮我看看,不足和改进之处
解决方案三:
来人吧,来人吧
解决方案四:
我勒个去,估计很少有人这么看的
解决方案五:
自己看看,自己检查,。
解决方案六:

解决方案七:

解决方案八:
我不应该去捕获runtimeException
解决方案九:
没注释啊
解决方案十:
你可以把你整个项目发上来,这么一段段的代码谁都看不出来

时间: 2024-10-27 21:56:01

一个java计算器,请帮我看看哪里有不足和改进之处的相关文章

各位大侠都进来看看 小弟刚接触java不久 请帮帮忙

问题描述 1.写一个socket程序服务器端:启动后初始化socket在某个端口上侦听接收到客户端连接后启动一个线程用于收发数据.2.写一个示例程序:初始化串口.设置串口参数.启动线程不断读取串口数据并将数据存储到文件中3.数据表TreeTable字段为:IdparentIdName其中parentId为-1的表示根节点例子如下:IdparentIdName1-1总署21深圳海关32罗湖海关42梅林海关51广州海关61天津海关要求:从数据库TreeTable表读取出数据并显示到TreeView中

BigObjectThatShouldNotBeSerializedWithAButton bigOne;是什么意思阿?java高手请帮我回答

问题描述 importjava.awt.*;importjava.awt.event.*;importjava.io.Serializable;classMyAppjava.io.Serializable{BigObjectThatShouldNotBeSerializedWithAButtonbigOne;ButtonaButton=newButton();classMyActionListenerimplementsActionListener{publicvoidactionPerform

这是一个java的crc16实现类,请大侠帮我翻译为c语言版

问题描述 这是一个java的crc16实现类,请大侠帮我翻译为c语言版 import java.util.zip.Checksum; public class CRC16Modbus implements Checksum { private static final int[] TABLE = { 0x0000, 0xc0c1, 0xc181, 0x0140, 0xc301, 0x03c0, 0x0280, 0xc241, 0xc601, 0x06c0, 0x0780, 0xc741, 0x0

一个简单计算器java程序,不知道为什么除法总是算错

问题描述 一个简单计算器java程序,不知道为什么除法总是算错 一个简单计算器java程序,不知道为什么除法总是算错(不是全概率是高概率应该说,麻烦大大帮忙看看,非常感激 package com.calculator; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.Em

java-初学者JAVA编写的程序问题,请帮我看看哪里错了

问题描述 初学者JAVA编写的程序问题,请帮我看看哪里错了 这个是程序 mport java.io.*; public class shuru{ public static void main(String[] args){ try { InputStreamReader is=new InputStreamReader(System.in); BufferedReader br= new BufferedReader(is); String s; **(1)System.out.print("

android 铃音-一个播放铃音的Helloworld,手机上一运行就崩溃,请帮看看问题在哪?

问题描述 一个播放铃音的Helloworld,手机上一运行就崩溃,请帮看看问题在哪? 几乎是照抄网上文章的代码,想实际点击button1播放手机铃音,点button2停止,结果在在手机上测试,一点击,APP就崩溃关闭了,请问是哪里不对? import java.io.IOException; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.RingtoneManag

java请进,本人小白,这个很简单程序看不懂,单击事件。请帮我讲解一下,就是用AIDE开发的呜呜

问题描述 java请进,本人小白,这个很简单程序看不懂,单击事件.请帮我讲解一下,就是用AIDE开发的呜呜 解决方案 这是android/安卓,和java不是一回事-- 请会安卓的来解答吧 解决方案二: **首先上面的三个private是定义在本类里的私有对象. super.oncreate()方法是默认继承的. 下面的setContentView是将R下面的layout中的newone设为初始布局 三个this.XXX是将上面的对象进行初始化,要不会报空指针异常. btn是个按钮,你的代码是给

list-link中如何产生一个初始化好了的List列表?就和数组一样?请帮帮忙

问题描述 link中如何产生一个初始化好了的List列表?就和数组一样?请帮帮忙 link中如何产生一个初始化好了的List列表?就和数组一样?请帮帮忙 解决方案 List有重载形式直接放入Array: list = new List<int>(new int[10]) 解决方案二: 没明白 补充完整 楼下接棒 解决方案三: 没明白 补充完整 楼下接棒 解决方案四: List<int> list = new List<int>(); for(i=0;i<10;i+

日历-求帮写一个java小程序

问题描述 求帮写一个java小程序 读取txt文件,文件中有一个8位的日期(任意),读出并打印此日期开始的一个月日历 解决方案 String s="20160221"; SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); try { Date startDate=sdf.parse(s); Calendar c2=Calendar.getInstance(); Calendar c=Calendar.getI