问题描述
大家好哦,我是个新手,下面是个计算器的代码,可是我看不懂,希望谁能帮我逐行解释下呢,用的是什么方法怎么调用个函数法,越具体越好哦。本人万分感谢,有谁愿意收做小徒弟更好呵呵代码一:packagetestmidlet;importjavax.microedition.midlet.*;importjavax.microedition.lcdui.*;publicclassTestMidletextendsMIDlet{staticTestMidletinstance;TestScreendisplayable=newTestScreen();publicTestMidlet(){instance=this;}publicvoidstartApp(){Display.getDisplay(this).setCurrent(displayable);}publicvoidpauseApp(){}publicvoiddestroyApp(booleanunconditional){}publicstaticvoidquitApp(){instance.destroyApp(true);instance.notifyDestroyed();instance=null;}}代码二:packagetestmidlet;importjavax.microedition.lcdui.*;publicclassTestScreenextendsFormimplementsCommandListener{privateTextFieldintA=newTextField("请输入数字a","0",10,TextField.DECIMAL);privateTextFieldintB=newTextField("请输入数字b","0",10,TextField.DECIMAL);privateTextFieldresult=newTextField("运算结果:","0",10,TextField.ANY);privateChoiceGroupopt=newChoiceGroup("运算:",ChoiceGroup.EXCLUSIVE);String[]op={"+","-","*","/"};publicTestScreen(){super("计算器");try{jbInit();}catch(Exceptione){e.printStackTrace();}}privatevoidjbInit()throwsException{opt.append(op[0],null);opt.append(op[1],null);opt.append(op[2],null);opt.append(op[3],null);append(intA);append(intB);append(opt);append(result);setCommandListener(this);addCommand(newCommand("退出",Command.EXIT,1));addCommand(newCommand("计算",Command.OK,2));}privatevoidperformAddAction(){inta,b,r=0;a=Integer.parseInt(intA.getString());b=Integer.parseInt(intB.getString());if(op[opt.getSelectedIndex()].equals("+")){r=a+b;}if(op[opt.getSelectedIndex()].equals("-")){r=a-b;}if(op[opt.getSelectedIndex()].equals("*")){r=a*b;}if(op[opt.getSelectedIndex()].equals("/")){if(b==0){result.setString("除数不能为0!");return;}r=a/b;}result.setString(Integer.toString(r));}publicvoidcommandAction(Commandcommd,Displayabledisplayable){if(commd.getCommandType()==Command.EXIT){TestMidlet.quitApp();}if(commd.getCommandType()==Command.OK){performAddAction();}}}
解决方案
解决方案二:
importjavax.microedition.midlet.*;importjavax.microedition.lcdui.*;publicclassTestMIDletextendsMIDlet{staticTestMIDletinstance;//MIDlet的实例TestScreendisplayable=newTestScreen();//程度的主界面publicTestMIDlet(){instance=this;}/***程序的入口*/publicvoidstartApp(){Display.getDisplay(this).setCurrent(displayable);//将主界面显示出来}publicvoidpauseApp(){}publicvoiddestroyApp(booleanunconditional){}/***退出程序*/publicstaticvoidquitApp(){instance.destroyApp(true);instance.notifyDestroyed();instance=null;}}
importjavax.microedition.lcdui.*;publicclassTestScreenextendsFormimplementsCommandListener{privateTextFieldintA=newTextField("请输入数字a","0",10,TextField.DECIMAL);//用于输入第一个数字的输入框privateTextFieldintB=newTextField("请输入数字b","0",10,TextField.DECIMAL);//用于输入第而个数字的输入框privateTextFieldresult=newTextField("运算结果:","0",10,TextField.ANY);//用于存放结果的输入框privateChoiceGroupopt=newChoiceGroup("运算:",ChoiceGroup.EXCLUSIVE);//用于选择运算符的单选框String[]op={"+","-","*","/"};//支持的操作符/***构造函数*/publicTestScreen(){super("计算器");//Form的标题叫计算器try{jbInit();}catch(Exceptione){e.printStackTrace();}}/**初始化界面*/privatevoidjbInit()throwsException{//将运算符加入都单选框opt.append(op[0],null);opt.append(op[1],null);opt.append(op[2],null);opt.append(op[3],null);//加入第一个输入框append(intA);//加入第二个输入框append(intB);//加入运算符单选框append(opt);//加入存放结果的输入框append(result);//设置按钮事件监听器setCommandListener(this);//加入左右按钮addCommand(newCommand("退出",Command.EXIT,1));addCommand(newCommand("计算",Command.OK,2));}/**计算结果*/privatevoidperformAddAction(){inta,b,r=0;a=Integer.parseInt(intA.getString());//获取第一个输入框的数字b=Integer.parseInt(intB.getString());//获取第二个输入框的数字//根据不同的运算符,执行不同的操作if(op[opt.getSelectedIndex()].equals("+")){//加法运算r=a+b;}if(op[opt.getSelectedIndex()].equals("-")){//减法运算r=a-b;}if(op[opt.getSelectedIndex()].equals("*")){//乘法运算r=a*b;}if(op[opt.getSelectedIndex()].equals("/")){//除法运算if(b==0){//判断除数不能为0result.setString("除数不能为0!");return;}r=a/b;}//将结果加入到结果输入框result.setString(Integer.toString(r));}/***左右按钮响应*/publicvoidcommandAction(Commandcommd,Displayabledisplayable){if(commd.getCommandType()==Command.EXIT){//按了退出按钮TestMIDlet.quitApp();//退出程序}if(commd.getCommandType()==Command.OK){//按了计算按钮performAddAction();//计算结果}}}
解决方案三:
学习
解决方案四:
packagetestmidlet;importjavax.microedition.midlet.*;importjavax.microedition.lcdui.*;//继承MIDletJ2ME的入口类publicclassTestMidletextendsMIDlet{staticTestMidletinstance;TestScreendisplayable=newTestScreen();//实例化TestScreen类publicTestMidlet(){instance=this;}//入口方法publicvoidstartApp(){Display.getDisplay(this).setCurrent(displayable);//显示TestScreen(Form)}publicvoidpauseApp(){}publicvoiddestroyApp(booleanunconditional){}//退出publicstaticvoidquitApp(){instance.destroyApp(true);instance.notifyDestroyed();instance=null;}}代码二:packagetestmidlet;importjavax.microedition.lcdui.*;//继承FormpublicclassTestScreenextendsFormimplementsCommandListener{privateTextFieldintA=newTextField("请输入数字a","0",10,TextField.DECIMAL);//输入框A默认0,限制长度为10,数字(小数)privateTextFieldintB=newTextField("请输入数字b","0",10,TextField.DECIMAL);//输入框B默认0,限制长度为10,数字(小数)privateTextFieldresult=newTextField("运算结果:","0",10,TextField.ANY);//结果输入框默认0,限制长度为10,任意字符privateChoiceGroupopt=newChoiceGroup("运算:",ChoiceGroup.EXCLUSIVE);//选项组件单选String[]op={"+","-","*","/"};//各运算符号//构造publicTestScreen(){super("计算器");try{jbInit();}catch(Exceptione){e.printStackTrace();}}//初始化privatevoidjbInit()throwsException{//添加运算符号opt.append(op[0],null);opt.append(op[1],null);opt.append(op[2],null);opt.append(op[3],null);//添加输入框append(intA);append(intB);append(opt);append(result);setCommandListener(this);//设置命令监听//添加命令addCommand(newCommand("退出",Command.EXIT,1));addCommand(newCommand("计算",Command.OK,2));}//计算privatevoidperformAddAction(){inta,b,r=0;a=Integer.parseInt(intA.getString());//得到输入框A里的数字b=Integer.parseInt(intB.getString());//得到输入框B里的数字//根据当前用户所选的运算符做相应计算if(op[opt.getSelectedIndex()].equals("+")){r=a+b;}if(op[opt.getSelectedIndex()].equals("-")){r=a-b;}if(op[opt.getSelectedIndex()].equals("*")){r=a*b;}if(op[opt.getSelectedIndex()].equals("/")){if(b==0){//若除数为零,在结果输入框提示result.setString("除数不能为0!");return;}r=a/b;}result.setString(Integer.toString(r));//设置结果输入框显示计算后的结果}//命令事件响应publicvoidcommandAction(Commandcommd,Displayabledisplayable){if(commd.getCommandType()==Command.EXIT){//退出TestMidlet.quitApp();}if(commd.getCommandType()==Command.OK){//计算performAddAction();}}}
解决方案五:
哈哈,有人快了一步。
解决方案六:
学习一下
解决方案七:
学习
解决方案八:
推荐<<J2ME移动设备程序设计>>
解决方案九:
下点J2ME的视频来看看吧
解决方案十:
下点免费的电子书看看啊~CSDN上就好多
解决方案十一:
跟着学习
解决方案十二:
貌似这个跟applet类似
解决方案十三:
staticTestMidletinstance;//为什么要设为static?这样有什么好处呢?instance=this;//为什么要额外建立一个instance实例呢?this不是就代表TestMidlet吗?为什么要多此一举,这样做有什么好处吗?我觉得这段代码的结构很好,至少看起来很舒服,哪位高手能谈谈这段代码有什么优缺点吗?有哪些地方值得我们这些新手学习的地方?
解决方案十四:
还有append(intA);append(intB);append(opt);前面为什么不用加this.引用呢?
解决方案十五:
引用12楼softice_的回复:
staticTestMidletinstance;//为什么要设为static?这样有什么好处呢?instance=this;//为什么要额外建立一个instance实例呢?this不是就代表TestMidlet吗?为什么要多此一举,这样做有什么好处吗?我觉得这段代码的结构很好,至少看起来很舒服,哪位高手能谈谈这段代码有什么优缺点吗?有哪些地方值得我们这些新手学习的地方?
要调用Midlet的一些方法时,有以下两种处理方法:1.将自身即this作为参数传给其他类2.建一个自身的静态实例
解决方案:
引用13楼softice_的回复:
还有append(intA);append(intB);append(opt);前面为什么不用加this.引用呢?
加不加this都一样。除了某个方法的参数名或局部变量名与类的成员变量名相同这时候,如果不加this表示的是前者,加了this表示后者最常见的如:Stringtitle;//标题//假设这是一个构造方法publicTest(Stringtitle){this.title=title;}
解决方案:
引用15楼kf156的回复:
加不加this都一样。除了某个方法的参数名或局部变量名与类的成员变量名相同这时候,如果不加this表示的是前者,加了this表示后者最常见的如:Stringtitle;//标题//假设这是一个构造方法publicTest(Stringtitle){this.title=title;}
我的意思是append()方法是个对象方法,前面为什么不绑定一个对象
解决方案:
j2me学习,有JAVA基础跟做一个项目最快.
解决方案:
引用16楼softice_的回复:
引用15楼kf156的回复:加不加this都一样。除了某个方法的参数名或局部变量名与类的成员变量名相同这时候,如果不加this表示的是前者,加了this表示后者最常见的如:Stringtitle;//标题//假设这是一个构造方法publicTest(Stringtitle){this.title=title;}我的意思是append()方法是个对象方法,前面为什么不绑定一个对象
没加就是默认的罗
解决方案:
学习一下!!!
解决方案:
明白了,又学到了,谢谢了,诸位兄弟!
解决方案:
很好,被其他兄弟抢先了:)
解决方案:
郭克华的视频教程看看吧,应该很有帮助的。网上很容易搜的到的。我也在看,呵呵