1、课程收获与不足
自己的收获
经过一个学期的JAVA课程学习,现在虽说算不上什么专业的JAVA程序员,但我还是很有收获。了解了这门语言,探索了这门语言,认知了这门语言。我从一个什么都不懂的菜鸟,到现在能够自己编一个简单的程序并使其跑起来,在本学期末还与小组成员成功编译运行了一个JAVA游戏,感觉十分有成就感呢!回首之前的学习历程,要想真正有所学,有所得,必须持之以恒,踏踏实实的跟着娄老师的“方针政策”走,不要有排斥心理。刚开始学习JAVA的时候的确不习惯,觉得很累,每周的java学习与博客总结都会占用周末业余时间。不过心态一定要好,反正要做,还不如把它做好,不要敷衍自己。万事开头难,习惯成自然!哈哈哈,虽然已经学了一学期JAVA了,但其实还有好多好多东西是需要自己去探索的。学习JAVA应该是循环渐进,按部就班,脚踏实地的。对了,JAVA课程是我第一次接触翻转课堂,翻转课堂讲究的是自己主动学习,主动探索,然后把问题反馈给老师,老师在课堂上解答。不过由于c语言学的不是很好,所以刚开始看到JAVA的时候,看着源代码,都不知道是什么意思,看书的时候一看到源代码就头疼,因为根本看不懂,那段时间挺挫败的。不过幸好每周都要考试!所以这也是驱动我学习的一个主要原因,想要拿高分,就得花时间看,把不懂的想尽办法弄懂。于是最开始最艰难的那段时间,我大部分课下时间都花在JAVA上,不懂的问高其和周正一,再加上翻书,网上查阅资料。三周下来,效果也挺明显的,并且我觉得JAVA这门语言虽然很高级但并不复杂,很多功能都是可以直接调用的,不需要自己亲手去编。世上无难事,只怕有心人。对于任何新生事物,我们首先不要排斥,如果可以,带着兴趣去探索,必定其乐无穷!受益匪浅!这学期也是我第一次接触到博客园。我感觉博客园真的是一个集思广益的地方,大家可以把自己的学习心得体会都通过博客的形式发表出来,然后其他人就可以去阅读、去参考别人成功的方法,有什么问题也可以建立一个小组,然后博主会和大家互动,共同探讨,解决问题。一学期的博客园生涯让我逐渐喜欢上了这里。记住,学JAVA,一定要做到课前预习与课后复习,书上的概念要理解透彻,代码一定要过手;多和同学沟通,互相学习,取长补短。娄老师说过,知识是学不完的,重要的是要找到一种适合自己的高效的学习方法,这将受益终生。
2、自己需要改进的地方
我觉得应该多看别人的博客,多与别人进行交流,但是本学期学习压力较大,这方面做得不够好,所以这是我的一大遗憾!其次,对JAVA的不同库的掌握需要增进,一旦对JAVA各种库的引用融会贯通,对较大程序的编写就能事半功倍,效率远超C语言,这也是JAVA最吸引我的一个地方。还有就是学JAVA千万不要浮躁,不要赶进度。说到浮躁,这也是一个很值得我深思的问题,我觉得我刚开始还没完全接受JAVA的时候,就比较浮躁。做事停留在表面,敷衍。经过后来逐渐调整,才慢慢改变。真正学习的时候,浮躁会使你失去很多。
如果有结对,写一下你提供的帮助或接受了什么帮助,并对老师提供参考意见
在实验三和实验五阶段都有结对的部分。通过结对,我深刻地明白了团队合作的重要性。团队精神能推动团队运作和发展。在团队精神的作用下,团队成员产生了互相关心、互相帮助的交互行为,显示出关心团队的责任感,并努力自觉地维护团队的集体荣誉。我觉得结对编程这一环节很好,不仅让大家能够明确分工,合作的编写出程序,而且能培养大家的默契,让我们能够在实际操作过程中更好的编写代码。要想成功编写程序,这一过程是很复杂的,而团队方式可以使其简单许多,遇到问题的时候可以大家一起想,集思广益,而且团队操作在很大程度上还可以实现优势的互补(比如git代码,然后共享)。
3、给学弟学妹们的意见
如果重新学习这门课,怎么做才可以学得更好?
如果可以重新学习这门课的话,我想我会做的更好。首先我会找一本好的书本教材,然后辅助看教学视频。因为翻转课堂更强调的是自己主动学习,主动探索,主动发现问题。一本好的教材,可以让你更快更好的进入 Java的世界,然后看视频是一种比较直观的辅助学习方式。建议先看课本,发现不懂的地方,再结合视频,这样效果更好,如果视频上没有讲到的,就通过其他方式解决。老师之前会发视频链接,那里面讲的内容(毕向东老师主讲)都很不错。书上概念与代码搞懂了后,自己一定要主动动手敲代码!因为看懂和学懂完全是两回事,一定要学好基本语法,弄清 Java语言的特点。刚开始学习时,有些知识可能有些难懂,自己也不会敲代码。不过这没关系,这很正常。多看多问,多实践,慢慢的你就入门了。千万不要投机取巧!主动敲代码真的是学JAVA的精髓!JAVA和其他的编程语言一样,在学懂理论后,一定要实践。只有多动手编程,哪怕是简单的小程序,重复实现书上简单的例子,也是在积累和提高。
4、问卷调查
你觉得这门课老师应该继续做哪一件事情?
老师应该继续要求扇贝打卡与五笔打字练习,然后期末加分。这种方法很值得提倡,希望能够继续做下去。这不仅可以调动大家学习的积极性,而且还让我们的英语水平提高了很多,对于四六级以及以后在工作中打字速度等其他的方面都有很大的帮助。在博客园里发表博客也是很好的一种总结心得体会的方法,值得提倡。博客园是一个集思广益的地方,大家把自己的学习心得体会都通过博客的形式发表出来,然后大家可以交流意见,有什么不懂的也可以直接在问题小组里提出来,共同探讨,共同解决问题。这种感觉很棒。对了,每周一考我也觉得这必不可少,可以敦促学生的学习进度。
你觉得这门课老师应该停止做哪一件事情?
感觉每周的学习任务还是偏重了,几乎要占据半个周末的时间来搞JAVA。老师应根据每周学习内容的难易程度,合理调配学习任务量。
你觉得这门课老师应该开始做什么新的事情?
希望老师在课上多讲一点关于教材知识的内容(包括实验),让我们能够更高效更有针对性的去学习JAVA。因为教材的内容太多,盲目的去看就会浪费很多时间。如果因为赶进度,只是囫囵吞枣的看一遍教材的话,我们就不能很好的去理解java的相关知识。
B. Java程序设计作业
5分
C. JAVA编程作业
importjava.math.BigDecimal;
importjava.util.Random;
publicclassIncrease{
publicstaticbooleanisPrime(inta){
booleanflag=true;
if(a<2){//素数不小于2
returnfalse;
}else{
for(inti=2;i<=Math.sqrt(a);i++){
if(a%i==0){//若能被整除,则说明不是素数,返回false
flag=false;
break;//跳出循环
}
}
}
returnflag;
}
publicstaticvoidtest1(){
inti,n,k=0;
System.out.println("1-1000内素数");
for(n=3;n<=1000;n++){//3~1000的所有数
i=2;
while(i<n){
if(n%i==0)break;//若能整除说明n不是素数,跳出当前循环
i++;
}
if(i==n){//如果i==n则说明n不能被2~n-1整除,是素数
k++;//统计输出数的个数
System.out.print(i+" ");
if(k%6==0)//每输出5个则换行
System.out.println();
}
}
}
publicstaticvoidtest2()
{
Randomr=newRandom();
System.out.println(r.nextInt(301)-100);
}
publicstaticinttest3(intm,intn){
//辗转相除法
intr;
do{
if(m<n)
{
r=m;
m=n;
n=r;
}
r=m%n;
m=n;
n=r;
}while(r!=0);
returnm;
}
publicstaticdoubletest4(intn){
doublee=1f;
doubletotal=1.0;
for(inti=0;i<n;i++)
{
total/=i+1;
e+=total;
}
BigDecimalb=newBigDecimal(e);
e=b.setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue();//表明四舍五入,保留四位小数
returne;
}
publicstaticvoidmain(String[]args){
//第一题测试
System.out.println(isPrime(131));
test1();
//第二题测试
test2();
//第三题测试
System.out.println("最大公约数为:"+test3(1302,19924));
//第四题测试
System.out.println("e="+test4(100));
}
}
运行结果:
true
1-1000内素数
3 5 7 11 13 17
19 23 29 31 37 41
43 47 53 59 61 67
71 73 79 83 89 97
101 103 107 109 113 127
131 137 139 149 151 157
163 167 173 179 181 191
193 197 199 211 223 227
229 233 239 241 251 257
263 269 271 277 281 283
293 307 311 313 317 331
337 347 349 353 359 367
373 379 383 389 397 401
409 419 421 431 433 439
443 449 457 461 463 467
479 487 491 499 503 509
521 523 541 547 557 563
569 571 577 587 593 599
601 607 613 617 619 631
641 643 647 653 659 661
673 677 683 691 701 709
719 727 733 739 743 751
757 761 769 773 787 797
809 811 821 823 827 829
839 853 857 859 863 877
881 883 887 907 911 919
929 937 941 947 953 967
971 977 983 991 997 106
最大公约数为:2
e=2.7183
D. java实验报告总结
源代码:
public class Exe1_1 {
public static void main (String args[]){
byte a1=127;
int a2=12345;
long a3=123456789L;
float a4=1.23e-5f;
double a5=1.4567e3;
char a6=65;
boolean a7=true;
System.out.println("a1="+a1+"\na2="+a2+"\na3="+a3+"\na4="+a4+"\na5="+a5+"\na6="+a6+"\na7="+a7);
}
}运行结果:
2.编写Java小应用程序,输出两行字符串:“Java很有趣。”和“努力学习Java编程。”,输出的起点坐标是(20,20),行距是50像素。源程序代码:
import java.awt.Graphics;
import java.applet.Applet;
public class Exe1_2 extends Applet{
public void paint(Graphics g){
g.drawString("Java很有趣。",20,20);
g.drawString("努力学习Java编程。",20,70);
}
}运行情况:
3.使用算术运算符得到一个4位十进制数的各位数字并输出,然后输出该数的逆序数和各位数字平方后相加的和。
源程序代码:
public class Exe1_3 {
public static void main (String args[]){
int n=3756,a,b,c,d,n1;
a=n/1000;
b=(n-1000*a)/100;
d=n%10;
c=(n%100-d)/10;
System.out.println("3756的逆序数为:"+d+" "+c+" "+b+" "+a);
System.out.print("各位数字平方后相加的和为:");
System.out.print(a*a+b*b+c*c+d*d);
}
}
运行结果:
三、实验总结(是否完成实验、实验过程中的问题以及解决方法分析等)
本次是我第一次使用JAVA来进行编程,感觉很是不一样,在前两节课中我们学习了有关Java的一些简单知识。然后这次的实验是对最初的一种练习。
在第一题中,我们重要是认识java的运行环境,并且了解各种变量的数据类型。只要通过简单的语句就可以通过运行。其中出现了一些单词的拼写错误,这些是可以修改正确的。第二题我们练习的十一个小的applet应用程序,需要设置一个网页来显示,这是一个很不一样的地方,最后成功测试,里面需要注意的是显示位置的问题。第三题我们做的是一个有算法要求的解决问题,在测试中出现了一点小问题,程序的算法出了错。还有一个问题是有关于显示问题,最后的数据输出需要用到两行分别显示字符和数据,这样才不会出错。
E. JAVA编程作业
网上找的,你试试能用吗
public class Student implements Comparable{
public Student(String no, String name) {
this.no = no;
this.name = name;
}
public Student() {
}
public Student(String no, String name, double english, double maths,
double computer, double sum) {
this.no = no;
this.name = name;
this.english = english;
this.maths = maths;
this.computer = computer;
this.sum = sum;
}
private String no;
private String name;
private double english;
private double maths;
private double computer;
private Double sum=0.0;
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getEnglish() {
return english;
}
public void setEnglish(double english) {
this.english = english;
sum+=english;
}
public double getMaths() {
return maths;
}
public void setMaths(double maths) {
this.maths = maths;
sum+=maths;
}
public double getComputer() {
return computer;
}
public void setComputer(double computer) {
this.computer = computer;
sum+=computer;
}
public Double getSum() {
return sum;
}
public void setSum(Double sum) {
this.sum = sum;
}
public String toString() {
return "学号:"+no+"姓名"+name+"英语"+english+"数学"+maths+"计算机"+computer+"总成绩"+sum;
}
public int compareTo(Object o) {
return sum.compareTo(((Student)o).getSum());
}
public Double sum(){
return english+maths+computer;
}
public Double testScore(){
return sum/3;
}
}
public class StudentXW extends Student{
public StudentXW(String no, String name) {
super(no,name);
}
public StudentXW() {
super();
}
private String ty;
public String getDuty() {
return ty;
}
public void setDuty(String ty) {
this.ty = ty;
}
public Double testScore() {
return super.testScore()+3;
}
}
public class StudentBZ extends Student{
public StudentBZ(String no, String name) {
super(no,name);
}
public StudentBZ() {
super();
}
private String ty;
public String getDuty() {
return ty;
}
public void setDuty(String ty) {
this.ty = ty;
}
public Double testScore() {
return super.testScore()+5;
}
}
public class Test {
public static void main(String[] args) {
Student student1=new Student("001","1");
student1.setEnglish(60.0);
student1.setMaths(60.0);
student1.setComputer(60.0);
System.out.println(student1+"测试成绩是"+student1.testScore());
Student student2=new StudentXW("002","2");
student2.setEnglish(70.0);
student2.setMaths(70.0);
student2.setComputer(70.0);
System.out.println(student2+"测试成绩是"+student2.testScore());
Student student3=new StudentBZ("003","3");
student3.setEnglish(80.0);
student3.setMaths(80.0);
student3.setComputer(80.0);
System.out.println(student3+"测试成绩是"+student3.testScore());
}
}
F. java程序设计 综合作业报告求解答
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.;
public class Test extends JFrame implements ActionListener{
JMenuBar menuBar;
JMenu file;
JMenu newfile;
JMenuItem wenJianJia;
JMenuItem javaWenJianJia;
JMenuItem open;
JMenuItem exit;
JMenu edit;
JMenuItem cheXiao;
JMenuItem chongZhuo;
JMenuItem jianQie;
JMenuItem fuZhi;
JMenuItem zhanTie;
JMenuItem shanChu;
JMenuItem chaZhao;
JMenuItem tiHuan;
public static void main(String[] str){
new Test();
}
private void setLookAndFeel(){
UIManager.LookAndFeelInfo[] infos = UIManager.getInstalledLookAndFeels();
for(UIManager.LookAndFeelInfo info : infos)
{
if(info.getName().toLowerCase().equals("window"))
{
try {
UIManager.setLookAndFeel(info.getClassName());
SwingUtilities.updateComponentTreeUI(Test.this);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch ( e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public Test(){
menuBar = new JMenuBar();
file = new JMenu("文件");
newfile = new JMenu("新建");
wenJianJia = new JMenuItem("文件夹");
javaWenJianJia = new JMenuItem("Java文件夹");
open = new JMenuItem("打开");
exit = new JMenuItem("退出");
exit.addActionListener(this);
newfile.add(wenJianJia);
newfile.add(javaWenJianJia);
file.add(newfile);
file.add(open);
file.add(exit);
edit = new JMenu("编辑");
cheXiao = new JMenuItem("撤销");
chongZhuo = new JMenuItem("重做");
jianQie = new JMenuItem("剪切");
fuZhi = new JMenuItem("复制");
zhanTie = new JMenuItem("粘贴");
shanChu = new JMenuItem("删除");
chaZhao = new JMenuItem("查找");
tiHuan = new JMenuItem("替换");
edit.add(cheXiao);
edit.add(chongZhuo);
edit.add(jianQie);
edit.add(fuZhi);
edit.add(zhanTie);
edit.add(shanChu);
edit.add(chaZhao);
edit.add(tiHuan);
menuBar.add(file);
menuBar.add(edit);
this.setJMenuBar(menuBar);
this.setSize(600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLookAndFeel();
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == exit)
System.exit(0);
}
}
G. java编程作业
public class Customer {
private String memberName;
private int memberNo;
public Customer(String memberName,int memberNo){
this.memberName = memberName;
this.memberNo = memberNo;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public int getMemberNo() {
return memberNo;
}
public void setMemberNo(int memberNo) {
this.memberNo = memberNo;
}
}
----------------------------------分界线---------------------------------------------------
import java.util.ArrayList;
public class CustManager {
private static ArrayList<Customer> list = new ArrayList<Customer>();
public void addCust(String memberName,int memberNo){
list.add(new Customer(memberName, memberNo));
}
public int searchMemberByName(String memberName){
if(memberName == null || memberName.equals("")){
return 1;
}
for(Customer c : list){
if(memberName.equals(c.getMemberName())){
return c.getMemberNo();
}
}
return 0;
}
}
----------------------------------分界线---------------------------------------------------
public class Test {
public static void main(String[] args) {
CustManager custManager = new CustManager();
custManager.addCust("张三", 1);
custManager.addCust("李四", 2);
custManager.addCust("王五", 3);
custManager.addCust("马六", 4);
System.out.println(custManager.searchMemberByName("马六"));
}
}
H. 最近老师让做个JAVA大作业,还要附带项目报告
学生的话,主要就是项目介绍:1项目名称,2项目用途,3项目功能介绍以及操作4项目意义
I. JAVA实训报告
1、 实训的题目及简介:
题目:java计算器应用程序
简介:通过本程序可以实现计算器的基本功能。程序是Frame类的子类。使用GridLayout的布局方式对组件进行布局,用Panel类的容器存放按扭、文本框组件,程序中也用到大量的else-----if语句。
2、 设计说明:
一实验目的
通过实训能够结合实例进一步理解面向对象程序设计的基本概念,掌握程序设计的基本方法和技巧,灵活的使用包,进一步的理解接口,熟练的掌握在接口中对事件的实现。深入理解和灵活运用面向对象程序设计的基本特性,培养良好的程序设计风格,提高抽象思维、逻辑思维的能力。
二实验内容
编写一个实现计算器应用程序
三 程序介绍及其功能的实现
程序需要导入import java.awt.*、 import java.awt.event.*、 import java.lang.*、 import javax.swing.*包。①程序的基本框架是:首先定义一个Frame类的子类,之后声明三个面板的布局,即定义了GridLayout类的三个对象gl1、gl2、gl3。之后是定义了Panel类的容器的四个对象p0、p1、p2、p3,其中p0用来存放显示屏文本框组件,p1采用gl1布局,用来存放删除和归零按钮,p3采用gl3布局,用来存放数字按钮和运算符按钮,p2采用gl2布局,用来存放其它功能按钮键按钮。②具体的实现过程是:⑴、程序定义了JTextField类的对象tf1和TextField类的对象tf2及26个button类的按钮,在Counter类的构造方法中分别对各个对象进行了初始化,对面板进行了合适的布局,各个按钮也相应的添加到相应的容器中,在实例化所有按钮、设置其前景色的同时并注册监听器。
⑵、对各个组件进行相应的设计之后,即程序运行之后的可视化界面完成之后开始实现程序内部的事件过程,即接口的实现。定义了一个名为 Bt的类来实现接口,程序在actionPerformed( )方法中对各个按钮和文本框组件的具体方法进行实现,程序中不断的用else—if语句对按钮操作事件的实现,并对事件的异常进行处理。
3.程序清单
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import javax.swing.*;
public class Counter extends Frame
{
//声明三个面板的布局
GridLayout gl1,gl2,gl3;
Panel p0,p1,p2,p3;
JTextField tf1;
TextField tf2;
Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;
StringBuffer str;//显示屏所显示的字符串
double x,y;//x和y都是运算数
int z;//Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"
static double m;//记忆的数字
public Counter()
{
gl1=new GridLayout(1,4,10,0);//实例化三个面板的布局
gl2=new GridLayout(4,1,0,15);
gl3=new GridLayout(4,5,10,15);
tf1=new JTextField(27);//显示屏
tf1.setHorizontalAlignment(JTextField.RIGHT);
tf1.setEnabled(false);
tf1.setText("0");
tf2=new TextField(10);//显示记忆的索引值
tf2.setEditable(false);
//实例化所有按钮、设置其前景色并注册监听器
b0=new Button("Backspace");
b0.setForeground(Color.red);
b0.addActionListener(new Bt());
b1=new Button("CE");
b1.setForeground(Color.red);
b1.addActionListener(new Bt());
b2=new Button("C");
b2.setForeground(Color.red);
b2.addActionListener(new Bt());
b3=new Button("MC");
b3.setForeground(Color.red);
b3.addActionListener(new Bt());
b4=new Button("MR");
b4.setForeground(Color.red);
b4.addActionListener(new Bt());
b5=new Button("MS");
b5.setForeground(Color.red);
b5.addActionListener(new Bt());
b6=new Button("M+");
b6.setForeground(Color.red);
b6.addActionListener(new Bt());
b7=new Button("7");
b7.setForeground(Color.blue);
b7.addActionListener(new Bt());
b8=new Button("8");
b8.setForeground(Color.blue);
b8.addActionListener(new Bt());
b9=new Button("9");
b9.setForeground(Color.blue);
b9.addActionListener(new Bt());
b10=new Button("/");
b10.setForeground(Color.red);
b10.addActionListener(new Bt());
b11=new Button("sqrt");
b11.setForeground(Color.blue);
b11.addActionListener(new Bt());
b12=new Button("4");
b12.setForeground(Color.blue);
b12.addActionListener(new Bt());
b13=new Button("5");
b13.setForeground(Color.blue);
b13.addActionListener(new Bt());
b14=new Button("6");
b14.setForeground(Color.blue);
b14.addActionListener(new Bt());
b15=new Button("*");
b15.setForeground(Color.red);
b15.addActionListener(new Bt());
b16=new Button("%");
b16.setForeground(Color.blue);
b16.addActionListener(new Bt());
b17=new Button("1");
b17.setForeground(Color.blue);
b17.addActionListener(new Bt());
b18=new Button("2");
b18.setForeground(Color.blue);
b18.addActionListener(new Bt());
b19=new Button("3");
b19.setForeground(Color.blue);
b19.addActionListener(new Bt());
b20=new Button("-");
b20.setForeground(Color.red);
b20.addActionListener(new Bt());
b21=new Button("1/X");
b21.setForeground(Color.blue);
b21.addActionListener(new Bt());
b22=new Button("0");
b22.setForeground(Color.blue);
b22.addActionListener(new Bt());
b23=new Button("+/-");
b23.setForeground(Color.blue);
b23.addActionListener(new Bt());
b24=new Button(".");
b24.setForeground(Color.blue);
b24.addActionListener(new Bt());
b25=new Button("+");
b25.setForeground(Color.red);
b25.addActionListener(new Bt());
b26=new Button("=");
b26.setForeground(Color.red);
b26.addActionListener(new Bt());
//实例化四个面板
p0=new Panel();
p1=new Panel();
p2=new Panel();
p3=new Panel();
//创建一个空字符串缓冲区
str=new StringBuffer();
//添加面板p0中的组件和设置其在框架中的位置和大小
p0.add(tf1);
p0.setBounds(10,25,300,40);
//添加面板p1中的组件和设置其在框架中的位置和大小
p1.setLayout(gl1);
p1.add(tf2);
p1.add(b0);
p1.add(b1);
p1.add(b2);
p1.setBounds(10,65,300,25);
//添加面板p2中的组件并设置其的框架中的位置和大小
p2.setLayout(gl2);
p2.add(b3);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p2.setBounds(10,110,40,150);
//添加面板p3中的组件并设置其在框架中的位置和大小
p3.setLayout(gl3);//设置p3的布局
p3.add(b7);
p3.add(b8);
p3.add(b9);
p3.add(b10);
p3.add(b11);
p3.add(b12);
p3.add(b13);
p3.add(b14);
p3.add(b15);
p3.add(b16);
p3.add(b17);
p3.add(b18);
p3.add(b19);
p3.add(b20);
p3.add(b21);
p3.add(b22);
p3.add(b23);
p3.add(b24);
p3.add(b25);
p3.add(b26);
p3.setBounds(60,110,250,150);
//设置框架中的布局为空布局并添加4个面板
setLayout(null);
add(p0);
add(p1);
add(p2);
add(p3);
setResizable(false);//禁止调整框架的大小
//匿名类关闭窗口
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e1)
{
System.exit(0);
}
});
setBackground(Color.lightGray);
setBounds(100,100,320,280);
setVisible(true);
}
//构造监听器
class Bt implements ActionListener
{
public void actionPerformed(ActionEvent e2)
{
try{
if(e2.getSource()==b1)//选择"CE"清零
{
tf1.setText("0");//把显示屏清零
str.setLength(0);//清空字符串缓冲区以准备接收新的输入运算数
}
else if(e2.getSource()==b2)//选择"C"清零
{
tf1.setText("0");//把显示屏清零
str.setLength(0);
}
else if(e2.getSource()==b23)//单击"+/-"选择输入的运算数是正数还是负数
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(-x));
}
else if(e2.getSource()==b25)//单击加号按钮获得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);//清空缓冲区以便接收新的另一个运算数
y=0d;
z=0;
}
else if(e2.getSource()==b20)//单击减号按钮获得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=1;
}
else if(e2.getSource()==b15)//单击乘号按钮获得x的值和z的值并清空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=2;
}
else if(e2.getSource()==b10)//单击除号按钮获得x的值和z的值并空y的值
{
x=Double.parseDouble(tf1.getText().trim());
str.setLength(0);
y=0d;
z=3;
}
else if(e2.getSource()==b26)//单击等号按钮输出计算结果
{
str.setLength(0);
switch(z)
{
case 0 : tf1.setText(""+(x+y));break;
case 1 : tf1.setText(""+(x-y));break;
case 2 : tf1.setText(""+(x*y));break;
case 3 : tf1.setText(""+(x/y));break;
}
}
else if(e2.getSource()==b24)//单击"."按钮输入小数
{
if(tf1.getText().trim().indexOf('.')!=-1)//判断字符串中是否已经包含了小数点
{
}
else//如果没数点有小
{
if(tf1.getText().trim().equals("0"))//如果初时显示为0
{
str.setLength(0);
tf1.setText((str.append("0"+e2.getActionCommand())).toString());
}
else if(tf1.getText().trim().equals(""))//如果初时显示为空则不做任何操作
{
}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
}
}
y=0d;
}
else if(e2.getSource()==b11)//求平方根
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText("数字格式异常");
if(x<0)
tf1.setText("负数没有平方根");
else
tf1.setText(""+Math.sqrt(x));
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b16)//单击了"%"按钮
{
x=Double.parseDouble(tf1.getText().trim());
tf1.setText(""+(0.01*x));
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b21)//单击了"1/X"按钮
{
x=Double.parseDouble(tf1.getText().trim());
if(x==0)
{
tf1.setText("除数不能为零");
}
else
{
tf1.setText(""+(1/x));
}
str.setLength(0);
y=0d;
}
else if(e2.getSource()==b3)//MC为清除内存
{
m=0d;
tf2.setText("");
str.setLength(0);
}
else if(e2.getSource()==b4)//MR为重新调用存储的数据
{
if(tf2.getText().trim()!="")//有记忆数字
{
tf1.setText(""+m);
}
}
else if(e2.getSource()==b5)//MS为存储显示的数据
{
m=Double.parseDouble(tf1.getText().trim());
tf2.setText("M");
tf1.setText("0");
str.setLength(0);
}
else if(e2.getSource()==b6)//M+为将显示的数字与已经存储的数据相加要查看新的数字单击MR
{
m=m+Double.parseDouble(tf1.getText().trim());
}
else//选择的是其他的按钮
{
if(e2.getSource()==b22)//如果选择的是"0"这个数字键
{
if(tf1.getText().trim().equals("0"))//如果显示屏显示的为零不做操作
{
}
else
{
tf1.setText(str.append(e2.getActionCommand()).toString());
y=Double.parseDouble(tf1.getText().trim());
}
}
else if(e2.getSource()==b0)//选择的是“BackSpace”按钮
{
if(!tf1.getText().trim().equals("0"))//如果显示屏显示的不是零
{
if(str.length()!=1)
{
tf1.setText(str.delete(str.length()-1,str.length()).toString());//可能抛出字符串越界异常
}
else
{
tf1.setText("0");
str.setLength(0);
}
}
y=Double.parseDouble(tf1.getText().trim());
}
else//其他的数字键
{
tf1.setText(str.append(e2.getActionCommand()).toString());
y=Double.parseDouble(tf1.getText().trim());
}
}
}
catch(NumberFormatException e){
tf1.setText("数字格式异常");
}
catch( e){
tf1.setText("字符串索引越界");
}
}
}
public static void main(String args[])
{
new Counter();
}
}
4、调试结果
5、实习体会