




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一 运行环境及简单程序实验实验一 运行环境及简单程序实验实验目的: 搭建java程序运行环境 编写、运行最简单的应用程序与小应用程序1.1 安装jdk首先应安装sun公司的jdk,可以从sun公司的网站下载jdk的最新版本。(目前最新版本是1.4.2)。网址为:。在该网页top downloads项中选择j2se1.4.2sdk,在随后弹出的网页中download适合本机操作系统的jdk,按向导操作即可。1.2 设置环境变量windows9x:用文本编辑器打开autoexec.bat文件,加入:(1)set path=java_rootbin;java_root为jdk安装的根目录。如:将jdk安装在c:jdk1.4目录下,则:set path=c:jdk1.4bin;path是必须要设置的,它是设置可执行文件(.exe,.com,.bat)搜索路径的命令,如果不设置path,系统将无法执行javac(编译)和java(运行)等命令。(2)set classpath = . ; java_rootjrelibrt.jar; java_rootlibtools.jar; 注意:1)classpath的第一项为“.”,它表示当前目录。2)rt代表runtime,它集成了所有的runtime与designtime的java类,有些人将dt.jar添加到classpath中,其实它只是rt.jar的一个子集。3)tools.jar中提供了许多运行java程序的工具,许多程序的运行需要用到它。 classpath的设置不是必须的,它可理解为设置在jvm上“可执行”文件(.class)搜索路径的命令。windows2000、xp:可在“控制面板”中选择“系统”“高级” “环境变量”,见图1.1(a),然后编辑“系统变量”中的“path”,参见图1.1(b),“classpath”,参见图1.1(c),在变量内容中分别加入以上内容。如果“path”、“classpath”变量不存在,则可以单击图1.1(a)中的“系统变量”下的“新建”按扭建立。图1.1(a) 环境变量配置界面图1.1(b) 编辑classpath变量界面图1.1(c) 编辑path变量界面1.3 编写java程序1、编写一应用程序,在屏幕上显示“hello world!”步骤1:打开记事本,键入下列代码:public class hello public static void main(string args)system.out .println(“hello world!”);步骤2:保存文件,保存在“d:myjava”目录中,文件名为“hello.java”。注意:d:myjava为自行创建的工作目录;文件名一定要存成hello.java,扩展名为.java,不要存成hello.java.txt或其他的文件名。步骤3:编译进入到ms-dos方式,键入以下命令:d:myjavajavac hello.java如果没有错误,会在该路径下产生firstprog.class文件,如果有错误,则需要改正后重新编译。可能出现的错误:javac:bad command or file name原因:系统未找到javac这个可执行文件,请检查环境变量的设置。注意大小写,如图1.2所示:图1.2 原因:string 的首字母应该大写。语句结束要有“;”,如图1.2所示:图1.2 原因:语句后缺少;号结束。错误的文件名,如果源文件中有一个类为public的,那么文件名一定和此类相同,且扩展名为.java。如图1.3所示:图1.3原因:文件名错误,例如存成了hello.java.txt。步骤4:运行键入以下命令:d:myjavajava hello如果没有错误,会在屏幕上看到如下结果,如图1.4:图1.4可能出现的错误:没有找到要执行的类名,如图1.5所示:图1.5原因:没有找到hello.class。如果文件中的类名是“hello”,而将其存成了“hello.java”,会出现此错误;main方法的书写不正确;classpath没有正确设置也会出现此错误,可以键入以下命令:d:myjavaset classpath=.,(符号.的含义是代表当前路径。)去设置,然后再执行。2、编写一小应用程序,在屏幕上显示“hello world!”步骤1:打开记事本,键入下列代码:import java.applet.*;import java.awt.*;public class myapplet extends appletpublic void paint(graphics g)g.drawstring(hello world! ,5,10); 步骤2:保存在d:myjava目录下,文件名为myapplet.java。步骤3:编译,键入下列代码:d:myjavajavac myapplet.java步骤4:编写一html文档,内容如下:步骤5:保存在d:myjava目录下,文件名为扩展名为.html或.htm的文档。这里,存成myapplet.html。步骤6:运行,键入下列代码:d:myjavaappletviewer myapplet.html结果如图1.6所示:图1.6出错分析:1)小应用程序运行时需要使用appletviewer或浏览器,不可以使用运行应用程序的java命令。2)运行包含小应用程序的超文本文档而不是.class文件。52实验二 基本语法实验实验二 基本语法实验实验目的: 熟悉java的基本语法 编写应用程序接收命令行参数 编写应用程序接收用户从键盘的输入 掌握字符串与数组的基本方法2.1 接收命令行参数的程序编写一应用程序求若干个数的平均数,平均数要求从命令行输入。应用程序中main方法的参数string 类型的数组args能接受用户从命令行键入的参数。步骤1:编辑average.java,设保存在d:myjava目录下。class averagepublic static void main(string args)double n,sum=0;for (int l=0;ljavac average.java步骤3:执行,键入如下命令,注意,命令行参数之间用空格分隔。d:myjavajava average.java “12.34” “34.45” “21212121”运行结果如图2.1所示:图2.1注意:1)参数的个数可以利用args.length来取得。2)参数“12.34”、 “34.45”、 “21212121”分别赋给了main方法的参数args0、args1与args2。3)由于args0、args1与args2是string类型的,所以要利用double.valueof(string s).doublevalue()方法将string类型转化成double类型。2.2 接收键盘输入的程序编写一应用程序,接收用户从键盘输入的摄氏温度,然后将其转化成等效的华氏温度。方法一:利用system.in.read()方法可接收从键盘输入的unicode码,做一循环取键值,循环出口为当输入回车时,即判断键值如果为13,则退出循环。步骤1:编辑accept.java,设保存在d:myjava目录下。import java.io.*;import java.io.*;class acceptpublic static void main(string args)int c=0;string s=;system.out.println(输入摄氏度:(0数值100);/system.in.read()语句需要加trycacth()捕获异常trywhile (c!=13)/当输入的不是回车c=system.in.read();s=s+(char)c;/将int型转化成char型,再连接成字符串catch(exception e)int celsius=integer.parseint(s.trim();double fahre=1.8*celsius+32;system.out.println(转化成华氏度为:+fahre);步骤2:编译及运行,运行结果如图2.2所示:图2.2注意:1)in是system类的一个属性,system.in的返回类型是inputstream类型,输入字节流的父类(有关inputstream流的内容将在本书第九章中介绍),inputstream类中的read()方法可以读取一个用户从键盘上输入的键值。system.in.read()的返回值是整型,因此需要先转化成字符型后再连接成字符串。2)system.in.read()需要用trycatch()机制来捕获异常(trycatch()的内容将在本书第四章中介绍)。3)将字符串转化成相应的整型数值后再利用公式计算出华氏温度。方法二:由于inputstream类中的read()方法只能读取一个键值,所以需要利用循环才能读出用户从键盘输入的一串字符,有没有读取一行字符的命令呢?我们可以利用java中类的嵌套来实现。由于bufferedreader类有读取一行字符串的方法,所以可以这样去定义对象:bufferedreader br=new bufferedreader(new inputstreamreader(system.in);步骤1:编辑accept1.java,设保存在d:myjava目录下。class accept1public static void main(string args)string s=;system.out.println(输入摄氏度:(0数值100);bufferedreader br=new bufferedreader(new inputstreamreader(system.in);trys=br.readline();catch(exception e)int cel=integer.parseint(s.trim();double f=cel*1.8+32;system.out.println(s+摄氏度转化成华氏度为:+f);步骤2:编译及运行,结果如图2.3所示:图2.32.3 数据的排序编写应用程序,按升序输出一维数组中的元素。排序的方法有很多,常用的有选择法和冒泡法,在此使用选择法。步骤1:编辑sort.java,设保存在d:myjava目录下。class sortpublic static void main(string args)int a=1,3,5,6,0,2,7,9,8;int temp;int k;int len=a.length;for (int i=0;ilen-1;i+)k=i;for (int j=i+1;jaj) k=j;temp=ai;ai=ak;ak=temp;for (int i=0;i0?s:0);public double earnings()return weeklysalary;public string tostring()return “boss”+super.tostring();/定义commissionworker类,为employee的子类final class commissionworker extends employeeprivate double salary;private double commission;private int quantity;public commissionworker(string first,string last,double s,double c,int q)super(first,last);setsalary(s);setcommission(c);setquantity(q);public void setsalary(double s)salary=(s0?s:0);public void setquantity(int q)quantity=(q0?q:0);public void setcommission(double c)commission=(c0?c:0);public double earnings()return salary+commission+quantity;public string tostring()return “commissionworker”+super.tostring();/定义pieceworker类,为employee的子类final class pieceworker extends employeeprivate double wageperpiece;private int quantity;public pieceworker(string first,string last,double w,int q)super(first,last);setwage(w);setquantity(q);public void setwage(double w)wageperpiece=(w0?w:0);public void setquantity(int q)quantity=(q0?q:0);public double earnings()return quantity+wageperpiece;public string tostring()return “pieceworker”+ super.tostring();/定义hourlyworker类,为employee的子类class hourlyworker extends employeeprivate double wage;private double hours;public hourlyworker(string first,string last,double w,double h)super(first,last);setwage(w);sethours(h);public void setwage(double w)wage=(w0?w:0);public void sethours(double h)hours=(h=0&h168?h:0);public double earnings()return wage*hours;public string tostring()return “hourlyworker”+ super.tostring();class testpublic static void main(string args)/使用超类声明refemployee ref;string output=;/分别定义各子类boss b=new boss(hohn,smith,800.00);commissionworker c=new commissionworker(sue,hones,400.00,3.0,150);pieceworker p=new pieceworker(bob,lewis,2.5,200);hourlyworker h=new hourlyworker(karen,price,13.75,40);/使用子类分别实例化refref=b;output+=ref.tostring()+earned $+ref.earnings()+n+b.tostring()+earned $+b.earnings()+n;ref=c;output+=ref.tostring()+earned $+ref.earnings()+n+c.tostring()+earned $+c.earnings()+n;ref=p;output+=ref.tostring()+earned $+ref.earnings()+n+p.tostring()+earned $+p.earnings()+n;ref=h;output+=ref.tostring()+earned $+ref.earnings()+n+h.tostring()+earned $+h.earnings()+n;system.out.print(output);步骤2:编译及运行,结果如图3.2所示:图3.23.3 包的建立与使用步骤1:编辑calculate.java,设保存在d:myjava目录下。package mypackage;public class calculateprivate int a;public calculate(int a)this.a=a;system.out.println(from constration+this.a);public double volume(double height,double width,double depth)return height*width*depth;int add(int x,int y)return x+y;protected void a()system.out.println(from constration+a);步骤2:编译,查看在d:myjava目录下是否生成了mypackage文件夹,在该文件夹中是否有calculate.class文件。如图3.3所示:图3.3注意:包虽然在形式上是以文件夹的形式存在的,但绝对不可以用新建文件夹的形式来建立包。在命令行下编译包要使用图13.3所示的命令:javac d . calculate.java其中,-d . :表示编译的包存放在当前目录下,“.”为当前目录。它们之间必须要有空格分隔。步骤3:编辑interfaceclass.java,设保存在d:myjava目录下。import mypackage.calculate;class packagedemopublic static void main(string ags)calculate c=new calculate(10);double s=c.volume(5,6,7);system.out.println(s);/int b=c.add(5,6);/c.a();步骤4:编译及运行,运行结果如图3.4所示。图3.4出错分析:如果出现下列错误,如图3.5所示:图3.5原因:在使用import语句时,写成了import mypackage.*。解决方法:方法一:可以直接导入所需的类:import java.calculate.java方法二:删除calculate.java。思考:1可不可将calculate类中的构造方法前的public省去,为什么?2如果将packagedemo中注释的两行代码释放,则会出现什么样的结果?导致的原因是什么?实验四 异常处理实验实验四 异常处理实验实验目的: 异常的产生及捕获 自定义异常及其使用4.1 异常的捕获计算两数相除并输出结果。使用两个catch子句,分别捕捉除0异常与指针异常。步骤1:编辑ex1.java,设保存在d:myjava目录下。import java.io.*;class ex1public static void main(string args)trybufferedreader strin= new bufferedreader(new inputstreamreader(system.in);system.out.print(请输入除数:); string c1=strin.readline(); int a=integer.parseint(c1); system.out.print(请输入被除数:); c1=strin.readline(); int b=integer.parseint(c1); int c=b/a; system.out.println(商为:+c); /捕获与io有关的异常 catch(ioexception e)e.printstacktrace(); /捕获数值转化时的异常,如不能将字符转化成数值catch(numberformatexception e) system.out.println(请输入整数!); /e.printstacktrace(); /捕获除数为0的异常 catch(arithmeticexception e) system.out.println(除数不可以为0!); /e.printstacktrace(); 步骤2:编译,运行,当输入除数为0时,结果将如图4.1所示,当输入的不是整数时,如将30输成了3o,结果将如图4.2所示:图4.1图4.24.2 自定义异常自定义异常,当输入数值为13与4时产生异常。步骤1:编辑ex2.java,设保存在d:myjava目录下。class ex2 extends exceptionex2(string msg)super(msg);class myex private int x;void setx(int x)this.x=x;void f1() throws ex2if (x=13)throw new ex2(i dont like 13!);else if (x=4)throw new ex2(i dont like 4!);else system.out.println(100/x);public static void main(string args)myex a=new myex();trya.setx(5);/a.setx(13);/a.setx(4);/a.setx(0);a.f1();catch(ex2 e)system.out.println(get message:+e.getmessage();步骤2:编译及运行,分别释放上程序中被注释的语句。当释放a.setx(13)此语句后,运行结果将如图4.3所示,当释放a.setx(4)语句后,运行结果将如图4.4所示。图4.3图4.4思考:当释放a.setx(0)语句后,为什么会捕捉不到异常?实验五 小应用程序实验实验五 小应用程序实验实验目的: 掌握小应用程序的结构及生命周期 掌握带参数小应用程序的编写5.1 小应用程序生命周期小应用程序有init()、start()、stop()和destroy()方法,当小应用程序初次加载时,先执行init()方法,再执行start()方法。当小应用程序的窗口从后台恢复到前台时,如当小应用程序的窗口被最小化后再还原,先执行stop()方法,再执行start()方法,这时不执行init()和destroy()方法。当小应用程序被关闭时,先执行stop()方法,再执行destroy()方法。步骤1:编辑applife.java,设保存在d:myjava目录下。import java.applet.*;import java.awt.*;public class applife extends appletstatic int a,b,c,d;int x1=150,y1=50,x2=300,y2=50;public void paint(graphics g)g.drawline(x1,y1,x2,y2);g.drawline(x1,y1,x1,y1+a);g.drawstring(init,x1,y1);g.drawline(x1+50,y1,x1+50,y1+b);g.drawstring(start,x1+50,y1);g.drawline(x1+100,y1,x1+100,y1+c);g.drawstring(stop,x1+100,y1);g.drawline(x1+150,y1,x1+150,y1+d);g.drawstring(destory,x2,y2);public void init()a+=50;repaint();public void start()b+=50;repaint();public void stop()c+=50;repaint();public void destroy()d+=50;repaint();步骤2:编译applife.java。步骤3:编辑applife.htm,要求与applife.class在同一目录下。步骤4:运行applife.htm,当选择小应用程序“applet”菜单中的“重新启动”时,如图5.1所示,则结果将如图5.2所示;当将小应用程序窗口最小化再还原,将如图5.3所示。图5.1图5.2图5.35.2 带参数的小应用程序编写一小应用程序,由htm文件向其传递参数。步骤1:编辑app.java,设保存在d:myjava目录下。import java.applet.*;import java.awt.*;public class app extends appletstring name;public void init()name=getparameter(name);public void paint(graphics g)g.drawstring(wellcome +name,120,50);步骤2:编译app.java。步骤3:编辑app.htm,要求与app.class在同一目录下。步骤4:执行app.htm,运行结果如图5.4所示。图5.4实验六 图形图像实验实验六 图形图像实验实验目的: 了解java.awt包中提供的font类、color类和graphics类、image类 掌握设置控制gui组件字体和颜色的一般方法 掌握使用graphics绘制线条、矩形、圆角矩形、椭圆、弧等基本图形 掌握使用graphics绘制图像6.1 制图形步骤1:编辑gra.java,设保存在d:myjava目录下。import java.applet.*;import java.awt.*;public class gra extends appletfont f1=new font(helvetica,font.plain,28);public void paint(graphics g)g.setfont(f1);g.setcolor(color.blue);g.drawstring(我是美丽的大气球!,120,50);g.setcolor(color.green);g.drawoval(100,20,100,100);g.setcolor(color.black);g.filloval(130,60,10,10);g.filloval(180,60,10,10);g.setcolor(color.red);g.drawarc(130,50,50,50,180,180);g.setcolor(color.yellow);g.drawline(150,120,150,250);步骤2:编译gra.java。步骤3:编辑gra.htm,要求与gra.class在同一目录下。步骤4:运行gra.htm,运行结果如图6.1所示。图6.16.2 实现动画效果假设已在d:myjava目录下有一组图片,分别为s1.jpg、s2.jpg、s3.jpg。步骤1:编辑img1.java,设保存在d:myjava目录下。import java.applet.*;import java.awt.*;public class img1 extends appletimage img;/定义图像数组int total=4;/定义数组元素个数int currentimage=1;/定义当前的图片public void init()img=new imagetotalimages;for(int i=1;itotalimages;i+)/*img1中存放的是s1.jpg, img2中存放的是s2.jpg,img3中存放的是s3.jpg*/imgi=getimage(getcodebase(),s+i+.jpg);public void paint(graphics g)if (currentimage=4) currentimage=1;g.drawimage(imgcurrentimage,2,5,this);currentimage=+currentimage;trythread.sleep(500);catch(exception e)repaint();步骤2:编译img1.java。步骤3:编辑img1.htm,要求与img1.class在同一目录下。步骤4:运行img1.htm,三副图片会轮流播放。实验七 gui实验实验七 gui实验实验目的: 掌握用mouselistener和mousemotionlistener接口处理mouse事件的方法 掌握制作菜单及处理菜单事件的方法 掌握创建对话框及定位、显示、激活和关闭对话框的方法7.1 制作一个简单的画板步骤1:编辑mou.java,设保存在d:myjava目录下。import java.applet.*;import java.awt.*;import java.awt.event.*;public class mou extends applet implements mousemotionlistenerint x=-1,y=-1;public void init()setbackground(color.cyan);addmousemotionlistener(this);public void paint(graphics g)if(x!=-1&y!=-1)g.setcolor(color.red);g.drawline(x,y,x,y);public void mousedragged(mouseevent e)x=(int)e.getx();y=(int)e.gety();repaint();public void mousemoved(mouseevent e)public void update(graphics g)paint(g);步骤2:编译及运行,结果如图7.1所示。图17.17.2 菜单的编写编写一应用程序,运行后结果如图7.2所示,并且要求用鼠标右键单击窗口空白处时有弹出式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025驾校考试宝典试题带答案
- 安徽省2022年普通高中学业水平合格性考试物理题目及答案
- 2025 年小升初承德市初一新生分班考试数学试卷(带答案解析)-(北师大版)
- 2025 年小升初保定市初一新生分班考试数学试卷(带答案解析)-(冀教版)
- 银行员工2025年终工作总结
- Python大模型基础与智能应用(微课版)-教学大纲、教案 黄恒秋
- 山东省东营市2024-2025学年高二下学期7月期末化学试题(含答案)
- 北师大版四年级上册数学第二单元 线与角 检测题(无答案)
- 单独小屋出租合同范本
- 农庄独院出租合同范本
- 陶行知教育名篇读书分享ppt
- 学前儿童数学教育高职全套完整教学课件
- 2022-2023年医疗招聘药学类-药剂学高频考点题库带答案
- 保洁常用清洁药剂培训课件
- ICU 危重患者CVC 及PICC 导管的留置选择及护理研究新进展
- 二年级四宫格六宫格数独练习
- 绿化考试试题及答案
- YY/T 0316-2008医疗器械风险管理对医疗器械的应用
- GB/T 18650-2008地理标志产品龙井茶
- 《工伤认定研究11000字【论文】》
- 医院进修生结业鉴定表
评论
0/150
提交评论