java实验.doc

上传人:土8路 文档编号:11066848 上传时间:2021-06-25 格式:DOC 页数:52 大小:8.44MB
返回 下载 相关 举报
java实验.doc_第1页
第1页 / 共52页
java实验.doc_第2页
第2页 / 共52页
java实验.doc_第3页
第3页 / 共52页
java实验.doc_第4页
第4页 / 共52页
java实验.doc_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《java实验.doc》由会员分享,可在线阅读,更多相关《java实验.doc(52页珍藏版)》请在三一文库上搜索。

1、实验一 运行环境及简单程序实验实验目的: 搭建Java程序运行环境 编写、运行最简单的应用程序与小应用程序1.1 安装JDK首先应安装Sun公司的JDK,可以从Sun公司的网站下载JDK的最新版本。(目前最新版本是1.4.2)。网址为:http:/。在该网页Top Downloads项中选择J2SE1.4.2SDK,在随后弹出的网页中Download适合本机操作系统的JDK,按向导操作即可。1.2 设置环境变量Windows9x:用文本编辑器打开AUTOEXEC.BAT文件,加入:(1)SET PATH=java_rootbin;java_root为JDK安装的根目录。如:将JDK安装在C:J

2、DK1.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、子集。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) 编辑C

4、LASSPATH变量界面图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或其他的文件名。

5、步骤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所示

6、:图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、编写一小应用程序,在屏幕上显示“

7、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或.h

8、tm的文档。这里,存成Myapplet.html。步骤6:运行,键入下列代码:D:myjavaappletviewer Myapplet.html结果如图1.6所示:图1.6出错分析:1)小应用程序运行时需要使用appletviewer或浏览器,不可以使用运行应用程序的java命令。2)运行包含小应用程序的超文本文档而不是.class文件。实验二 基本语法实验实验目的: 熟悉Java的基本语法 编写应用程序接收命令行参数 编写应用程序接收用户从键盘的输入 掌握字符串与数组的基本方法2.1 接收命令行参数的程序编写一应用程序求若干个数的平均数,平均数要求从命令行输入。应用程序中main方法的参数

9、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”

10、、 “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,设

11、保存在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

12、.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()需要

13、用trycatch()机制来捕获异常(trycatch()的内容将在本书第四章中介绍)。3)将字符串转化成相应的整型数值后再利用公式计算出华氏温度。方法二:由于InputStream类中的read()方法只能读取一个键值,所以需要利用循环才能读出用户从键盘输入的一串字符,有没有读取一行字符的命令呢?我们可以利用Java中类的嵌套来实现。由于BufferedReader类有读取一行字符串的方法,所以可以这样去定义对象:BufferedReader br=new BufferedReader(new InputStreamReader(System.in);步骤1:编辑Accept1.java,设

14、保存在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+摄氏度转化成华氏度为

15、:+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 (

16、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,S

17、tring 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+qua

18、ntity;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

19、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

20、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”+

21、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,Pri

22、ce,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()+

23、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

24、 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注意:包虽然在形式上是以文件夹的形式存在的,但绝对不

25、可以用新建文件夹的形式来建立包。在命令行下编译包要使用图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.print

26、ln(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中注释的两行代码释放,则会出现什么样的结果?导致的原因是什么?实验四 异常处理实验实验目的: 异常的产生及捕获 自定

27、义异常及其使用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

28、(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(Arithm

29、eticException 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

30、=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.getMessag

31、e();步骤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()方法。当小应用程序的窗口从后台恢复到前台时,如当小应用程序的窗口被最小化后再还原

32、,先执行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

33、.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在同一目录下。applet

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1