《《java语言程序设计基础教程》.docx》由会员分享,可在线阅读,更多相关《《java语言程序设计基础教程》.docx(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java语言程序设计基础教程上机实验指导手册实验三类与对象、继承【目的】使用类来封装对象的属性和功能;掌握类变量与实例变量,以及类方法与实例方法的区别;掌握使用package和import语句。巩固以下概念:子类的继承性子类对象的创建过程成员变量的继承与隐藏方法的继承与重写【内容】1 .三角形、梯形和圆形的类封装。实验要求:编写一个Java应用程序,该程序中有3个类:Trangle Leder和Circle,分别 用来刻画“三角形”、“梯形”和“圆形”。具体要求如下:a) Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle 类具有返回周长、面积以及修改三个边的功
2、能。另外,Trangle类还具有一个boolean 型的属性,该属性用来判断三个属能否构成一个三角形。b) Lader类具有类型double的上底、下底、高、面积属性,具有返回面积的 功能。c) Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面 积的功能。=0) rootl=(-b+Math.sqrt(disk)/(2*a);rool2=(-b-Malh.$qn(disk)/(2*a);(方程的根:f.%fn,root 1 ,root2);) else (方程没有实根 n);else(不是一元 2 次方程”);)public void setCoefYicient(
3、double a.double b.double c)(this.a=a;this.b=b:this.c=c;if(a!=O) (boo=true; else boo=faise;) ) I模板2:将模板2给出的Java源程序SunRise.java保存到d:2000中。在编译模板 2给出的Java源文件之前,要重新设置classpath.,假设本地机SDK的安装目 录是 E:jdkl.5。在命令行执行如下命令:set classpath=e:jdk 1.5jrclibrt.jar;.;c:l (X)0然后编译模板2给出的Java源程序。或用鼠标右键点击“我的电脑”,弹 出快捷菜单,然后选择“
4、属性”命令,弹出“系统属性”对话框,再单击该对 话框中的“高级”选项卡,然后单击“环境变量”按钮。将classpath的值修 改为:E:jdk 1.5jreIibrt.jar;.;c:l 000然后重新打开一个命令行窗口,编译模板2给出的Java源程序。SunRise.javaimport tom.jiafci.*;class SunRise(public static void main(String args)SquareEquation equation=new SquareEquation(4,5.l);equation .getRoots();equation.sctCoeffici
5、cnt(-3,4,5);equation.getRoots();实验后的练习:假设SDK的安装目录是E:jdkl. 5,那么Java运行系统默认classpath的值 是:E:jdkl. 5jrelibrt. jar;.;其中的”表示应用程序可以使用当前目录中的无名包类以及当前目录下 的子目录中的类,子目录中的类必须有包名,而且包名要和子目录结构相对应。因此,如果将模板2应用程序Sunrise, java的字节码文件存放到d:5000 中,并将SquareEquation. java的字节码文件存放在D: 5000tomjiafei中, 那么就不需要修改classpath。要特别注意的是,因为
6、SquareEquation. java 有包名,切不可将SquareEquation. java以及它的字节码文件存放在d:5000 中,即不可以和Sunrise. java的字节码存放在一起,请进行如下的练习: 1.将SquareEquation. java存放在D:5000tomjiafci中,编译:D:5000tomjiafeijavac SquareEquation. java.将Sunrise, java存放到D: 5000中,编译:D:5000javac Sunrise. java.运行:java Sunrise【结果】将本次上机实验结果按照实验要求内容依次进行,填写实验目标、过
7、程、结果。【注意事项】实验报告要求每人提交一份,使用专门的报告纸,内容写全,包括实验名称、班级、 姓名、同组人,试验日期、交报告日期等。报告不需要填写源代码,只要将完成情况和所有练习题结果写上就可以。【思考题】实验四 字符串、时间与数字类【目的】掌握String类的常用方法掌握Date类以及Calendar类的常用方法;掌握Biginteger类的常用方法。【内容】1. String类的常用方法。实验要求:编写一个Java应用程序,判断两个字符串是否相同,判断字符串的前缀、后缀 是否和某个字符串相同,按字典顺序比较两个字符串的大小关系,检索字符串,创 建字符串,将数字型字符串转换为数字,将字符
8、串存放到数组中,用字符数组创建 字符串。e程序运行效果示例:程序运行效果如下图所示:程序模板:StringExample.javaclass SlringExample public static void main(String args) String s 1 =new StringCyou are a student).s2=new StringChow are you);if(代码1 )/使用equals方法判断si与s2是否相同Systcm.out.priniln(s 1 与 s2 相同);elseISystem.out.println(sl 与 s2 不相同);)if(代码2) 判
9、断s3的前缀是否是“220302”。System.ouLprintln(吉林省的身份证);String s4=new String(你),s5=new String(我);if(【代码3)按着字典序s4大于s5的表达式。(按字典序 s4 大于 s5);else(按字典序 s4 小于 s5);int posiion=0;String palh=c:javajspA.java;position:【代码5】获取path中最后出现目录分隔符号的位置System.out.println(c:javajspA.java 中最后出现的位置:+po$ition);String fileName=【代码6获取p
10、ath中“A.java子字符串。Syslem.out.prinlln(c:javajspA.java 中含有的文件名:+filcNamc);String s6=new StringClOO),s7=new String( 123.678);intnl=【代码7 将s6转化成ini型数据。double n2=代码8 将s7转化成double型数据。double m=nl+n2;System.out.println(m);Siring s8=【代码91 /String调用valuOf(inl n)方法将m转化为字符串对象 position=s8.indexOf(.);Siring tcnip=s8
11、.substring(position+1);(数字+m+有+temp.length()+”位小数);String s9=new StringC,ABCDEF);char a=【代码1。】将s8存放到数组a中。fbr(int i=a.length-1 ;i=O;i)(System.out.print( +aij);)令实验后的练习:1 .程序中的s6改写成String s6=new String(lal2b”);运行时提示怎样的错误?2 .请用数组a的前3个单元创建一个字符串并输出该串。3 .请给出获取path中“jsp”子字符串的代码。4 .在程序的适当位置增加如下代码,注意输出的结果。St
12、ring str1二new String(ABCABC),str2=null,str3=nulI,str4=null;str2=strl. replaceAll (A”, First);str3二str2. replaceAll (B,Second“);str4=str3. rep1accAl1 (C, Third“);System. out. println(strl);System, out. println(str2);System. out. println(str3);System. out. println(strd);实验一Java环境演练【目的】安装并配置Java运行开发环境;
13、掌握开发Java应用程序的3个步骤:编写源文件、编译源文件和运行应用程序;掌握开发Java Applet程序的3个步骤:编写源文件、编译源文件和运行Java Applet 程序;学习同时编译多个Java源文件。【内容】1. 一个简单的应用程序。实验要求:编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好, 很高兴学习Java和We are studentsw 令程序运行效果示例:程序运行效果如下图所示:程序模板:Hello.javapublic class Hello(public static void main (String args)(【代码I命令行窗口输出”你好,
14、很高兴学习JavaA a=new A();a.fA();1class A(void fA()(代码2 命令行窗口输出We are students )实验后的练习:1 .编译器怎样提示丢失大括号的错误?2 .编译器怎样提示语句丢失分号的错误?3 .编译器怎样提示将System写成sysleni这一错误?4 .编译器怎样提示将String写成string这一错误?2. 一个简单的Java Applet程序令实验要求:编写一个简单的Java Applet程序,并在Java Applet中写两行文字:“这是一 个Java Applet程序”和“我改变了字体”。程序运行效果示例:5 .可以使用Long
15、类中的下列static方法得到整数各种进制的字符串表示:Public static String toBinaryString(1ong i) Public static String toOctalString(long i) Public static String toHexString(long i)Public static String toString(long i, int p)其中的toString(long i, int p)返回整数i的p进制表示。请在适当位置添 加代码输出12345的二进制、八进制和十六进制表示。6 .在适当位置添加代码,分别输出数字m的整数部分和小数部
16、分。2.比较日期的大小。令实验要求:编写一个Java应用程序,用户从输入对话框输入了两个口期,程序将判断两个 日期的大小关系,以及两个日期之间的间隔天数。令程序运行效果示例:程序运行效果如下图所示:。程序模板:DateExampleimport java.util.*;import javax.swing.JOptionPane;public class DateExamplepublic static void main(String args)String str=JOpHonPane.showInputDialog(输入第一个 0 期的年份int yearOne=Integer.pars
17、eInt(str);str=JOptionPane.showInputDialog(输入该年的月份);int nionihOnc=Inicger.parseInt(str);str=JOptionPane.showInpuiDialog(输入该月份的 H 期:):int dayOne=Inleger.parseInt(str);str=JOptionPane.showInputDialog(输入第二个日期的年份:);int yearTwo=Integer.parseInt(str);slr=JOptionPane.showInputDialog(输入该年的月份:);int monthTwo=I
18、nteger.parseInt(str);sir=JOpiionPane,$howInpu【Dialog(输入该月份的日期:);int dayTwo=Integer.parseInt(str);Calendar calcndar=代码I 初始化日历对象【代码2】将calendar的时间设置为yearOne年monthOne月dayOne long timeOne=代码 3 【代码4】dayTwo 日/calendar表示的时间转换成亮秒long timeTwo=【代码 5long timeTwo=【代码 5/calendar表示的时间转换成亳秒。将calendar的时间设置为yearTwo年m
19、onthTwo月/用limcOnc做参数构造daicl/用limeTwo做参数构造date2/用limcOnc做参数构造daicl/用limeTwo做参数构造date2Date date 1 =代码 6 Date date2=【代码7 if(date2.equals(datel)(两个日期的年、月、日完全相同);)else if(date2.afterdate I)(您输入的第:个H期大于第一个H期)else if(date2.before(dateI)(您输入的笫二个日期小于第一个日期);)long days=【代码8计算两个日期相隔天数System.out.println(yearOne+
20、,+monthOne+J=j +dayOne+H 和+ycarTwo+年,+monlhTwo+月+dayTwo+相隔+day$+天 );)。实验后的练习:1 . Calendar对象可以将时间设置到年、月、日、时、分、秒。请改进上面的程 序,使用户输入的两个日期包括时、分、秒。2 .根据本程序中的一些知识,编写一个计算利息(按天计算)的程序。从输入 对话框输入存款的数目和起止时间。3 .处理大整数。实验要求:编写一个Java应用程序,计算两个大整数的和、差、积和商,并计算一个大整 数的因子个数(因子中不包括1和大整数本身)。程序运行效果示例:程序运行效果如下图所示:程序模板:Bigintege
21、rExampleimport java. math. *:class BigintegerExamplepublic static void ma in(String args)n2=new Biglnteger(/,result=nul1:result=代码1 /nl和n2做加法运算System, out. printlnClr+result. toStringO);result=【代码2】nl和n2做减法运算System, out. print In (差:+rcsult. toStringO);result=代码3 /nl和n2做乘法运算System. out. println(*1R:
22、*+result. toStringO);result=【代码4】nl和n2做除法运算System, out. printin(商:+result. toStringO);Biginteger m=new Biginteger(*1968957*),C0UNT=new Biginteger(0),0NE=ncw Biginteger (T),TW0=new Biginteger(*2*);System, out. printin(m. loString()+”的因子有;for(Biginteger i=TW0;i. compareTo(m)0;i=i. add(ONE) if(nl. rema
23、inder(i). compareTo(Biglnteger. ZERO)=0) C0UNT=C0UNT. add (ONE):System, out. printC *+i. toStringO);)System, out. printing):System, out. println(m. toStringO+”一共有+COUNT. toString()+”个因子);)e实验后的练习:1 .编写程序,计算大整数的阶乘。2 .编写程序,计算1+2+3的前999999999项的和。【结果】将本次上机实验结果按照实验要求内容依次进行,填写实验目标、过程、结果。【注意事项】实验报告要求每人提交一份
24、,使用专门的报告纸,内容写全,包括实验名称、班级、 姓名、同组人,试验日期、交报告日期等。报告不需要填写源代码,只要将完成情况和所有练习题结果写上就可以。【思考题】实验五组件与事件处理【目的】学习处理Act ionEvent事件;学习处理ItemEvent事件和paint方法;学习使用布局类。【内容】1.算术测试。实验要求:编写一个算书测试小软件,用来训练小学生的算术能力。程序由3个类组成, 其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确; ComputerFrame类对象负责为算术题目提供视图,比如用户可以通过ComputerFrame 类对象提供的GUI界面看到题目,
25、并通过该GUI界面给出题目的答案;UainClass是 软件的主类。程序运行效果示例:程序运行效果如下图所示:程序模板:Teacher.javapublic class Teacher int numberOne, numberTwo:String operator*;boolean right;public int giveNumberOne(int n) numberOne=(int) (Math, random () *n) + l;return numberOne;)publ ic int gi veNumberTwo (int n)i numbcrTwo=(int) (Math. r
26、andom()*n)+l;return numberTwo;public String giveOperator() double d=Math. random();if(d=0.5)operator=*+*;elseoperator=*-*;return operator;)pub1ic boo1ean getRight(int answer) if (operator, equals (*+*) i f(answer=numberOne+numberTwo)right=true;elseright=false;)else if (operator, equals CX-*)(i f(ans
27、wer=numberOne-numberTwo)right=true;elseright=false;)return right;)ComputerF rame.javaimport java.awt.*;import java.awl.cvent.*;public class ComputcrFreunc extends Frame implements ActionListcncr TextField textOne, textTwo, textResult:Button getProblem, giveAnwscr;Labe 1 operatorLabel, message:Teache
28、r teacher;ComputerFrame(String s)(super(s);tcacher=ncw Teacher 0;setLayout(new FlowLayout();texlOne=代码1 创建lextOnc,其可见字符长是10textTwo=【代码2】 创建textTwo,其可见字符长是10textResult=【代码3/创建texiResul I,其可见字符长是10 operatorLabe1=new Label(+);message=new Label (你还没有回答呢”); getProblem=ncw Button (获取题目”); give/nwser=new B
29、utton (确认答案”): add (getProb1cm);add(textOne);add(operatorLabeI);add(textTwo);add(new Label (*=*);add(textResult);add(giveAnwser): add(message);textResult. requestFocusO ;textOne. setEdi table(false);textTwo. setEditable(false):【代码4】将当前窗口注册为gclProblcm的ActionEvent事件监视器【代码5】将当前窗口注册为giveAnwser的ActionEvc
30、nl事件监视器 【代码6】将当前窗口注册为textResult的ActionEveni事件监视器 setBounds(100, 100,450, 100);sctVisiblc(truc);validateO ;addWi ndowLi stener(new WindowAdapter() public void windowClosing(WindowEvent e) System, exit(0););public void actionPerformed(ActionEveni e) if (【代码7】)判断事件源是否是getProblem int numberl=teacher. gi
31、reNumber0ne(100);int number2=tcachcr. giveNumberTwo(lOO):String operator=teacher. givetOperatorO :textOne. selTcxl(+numberl);textTwo. setText(+number2);operatorl.abel. setText (operator);message. setText (请回答);textResult. setText(nul1);i f (【代码8】)判断事件源是否是g i veAnwser String answer=textResult. getTex
32、tO ;try(int result=Integer. parselnt(answer);if(teacher. getRight(result)=true) message. setText (你回答正确”); else message. setText (你回答错误);)catch(NumberFoimatException ex) message. setText (请输入数字字符”);)textResult. rcqucstFocusO ;validateO ;)MainClass.javapublic class Ma inClass public static void main(
33、String args口) ComputerFrame frame:frame=【代码9】创建窗口,其标题为:算术测试)实验后的练习:1 .给上述程序增加测试乘、除的功能。2 .信号灯。令实验要求:编写一个带有窗口的应用程序。在窗口的北面添加一个下拉列表,该下拉列表 有“”、“”和三个选项。在窗口的中心添加一个画布,当用户在下拉列表选 择某项后,画布上绘制相应的信号灯。程序运行效果示例:程序运行效果如下图所示:。程序模板:SignalCanvas.javaimport java. awl. *;public class SignalCanvas extends Canvas int red,
34、green, yel low, x, y, r;SignalCanvas() setBackground(Color. white):)public void setRed(int r) red=r;)public void setGreen(int g) green=g:Ipublic void setYellow(int y) yellow=y;public void setPosition(int x,int y) this. x=x;this.y=y:)public void set Radi us(int r) this. r=r;)public void paint (Graphi
35、cs g) if (red=l) g. setColor (Color, red);else if(green=l) g. setColor (Color, green);else if(ycllow=l) g. setColor (Color, yellow);g. fillOvaKx, y, 2*r, 2*r):I1SignalF ranie.javaimport java. awt. *;i mport java, appl et. *;import java. awt. event. *;publ ic class Signa IFrame extends Frame implements I teniListener Choice choice