1、Java语言程序设计基础教程上机实验指导手册Java语言程序设计基础教程上机实验指导手册实验一 Java环境演练【目的】 安装并配置Java运行开发环境;掌握开发Java应用程序的3个步骤:编写源文件、编译源文件和运行应用程序;掌握开发Java Applet程序的3个步骤:编写源文件、编译源文件和运行Java Applet程序;学习同时编译多个Java源文件。【内容】 1一个简单的应用程序 实验要求:编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。 程序运行效果示例: 程序运行效果如下图所示: 程序模板: Hel
2、lo.javapublic class Hello public static void main (String args ) 【代码1】 /命令行窗口输出你好,很高兴学习Java A a=new A(); a.fA(); class A void fA() 【代码2】 /命令行窗口输出We are students 实验后的练习:1 编译器怎样提示丢失大括号的错误?2 编译器怎样提示语句丢失分号的错误?3 编译器怎样提示将System写成system这一错误?4 编译器怎样提示将String写成string这一错误?2一个简单的Java Applet程序 实验要求:编写一个简单的Java
3、Applet程序,并在Java Applet中写两行文字:“这是一个Java Applet程序”和“我改变了字体”。 程序运行效果示例: 程序运行效果如下图所示: 程序模板:FirstApplet.javaimport java.applet.*; import java.awt.*;public class FirstApplet extends Applet public void paint(Graphics g) g.setColor(Color.blue); 【代码1】/在Java Applet中绘制一行文字:“这是一个Java Applet 程序” g.setColor(Color
4、.red); g.setFont(new Font(宋体,Font.BOLD,36); 【代码2】/在Java Applet中绘制一行文字:“我改变了字体” 实验后的练习:5 程序中的主类如果不用public修饰,编译能通过吗?6 程序中的主类如果不用public修饰,程序能正确运行吗?7 程序将paint方法误写成Paint,编译能通过么?8 程序将paint方法误写成Paint,运行时能看到有关的输出信息吗?3联合编译 实验要求:编写4个源文件:Hello.java、A.java、B.java和C.java,每个源文件只有一个类,Hello.java是一个应用程序(含有main方法),使用
5、了A、B和C类。将4个源文件保存到同一目录中,例如:C:100,然后编译Hello.java。 程序运行效果示例: 程序运行效果如下图所示: 程序模板:模板1:Hello.javapublic class MainClass public static void main (String args ) 【代码1】 /命令行窗口输出你好,只需编译我 A a=new A(); a.fA(); B b=new B(); b.fB(); 模板2 :A.javapublic class A void fA() 【代码2】 /命令行窗口输出I am A 模板3 :B.javapublic class B
6、void fB() 【代码3】 /命令行窗口输出I am B 模板4 :C.javapublic class C void fC() 【代码4】 /命令行窗口输出I am C 实验后的练习:9 将Hello.java编译通过后,不断修改A.java源文件中的代码,比如,在命令行窗口输出“我是A类”或“我被修改了”。要求每次修改A.java源文件后,单独编译A.java,然后直接运行应用程序Hello。10 如果需要编译某个目录下的全部Java源文件,比如C:1000目录,可以使用如下命令:c:1000javac *.java【结果】将本次上机实验结果按照以上内容依次填写实验目标、过程、结果。【
7、注意事项】1 实验报告要求每人提交一份,使用专门的报告纸,内容写全,包括实验名称、班级、姓名、同组人,试验日期、交报告日期等。2 报告不需要填写源代码,只要将完成情况和所有练习题结果写上就可以。【思考题】实验二 Java基本数据类型与控制语句【目的】 1 掌握char型数据和int型数据之间的相互转换,同时了解unicode字符表;2 掌握使用ifelse if多分支语句;3 使用ifelse分支和while循环语句解决问题。【内容】 1输出希腊字母表。 实验要求:编写一个Java应用程序,该程序在命令行窗口输出希腊字母表。 程序运行效果示例: 程序运行效果如下图所示: 程序模板:GreekA
8、lphabet.javapublic class GreekAlphabet public static void main (String args ) int startPosition=0,endPosition=0; char cStart=,cEnd=; 【代码1】 /cStart做int型转换据运算,并将结果赋值给startPosition 【代码2】 /cEnd做int型转换运算,并将结果赋值给endPosition System.out.println(希腊字母在unicode表中的顺序位置:+(int)c); System.out.println(希腊字母表:); for(i
9、nt i=startPosition;irealNumber”替换【代码1】,可以么?2. 语句:“System.out.println(“猜对了!”);”为何要放在while循环语句之后?放在while语句的循环体中合理吗?【结果】将本次上机实验结果按照实验要求内容依次进行,填写实验目标、过程、结果。 【注意事项】实验报告要求每人提交一份,使用专门的报告纸,内容写全,包括实验名称、班级、姓名、同组人,试验日期、交报告日期等。报告不需要填写源代码,只要将完成情况和所有练习题结果写上就可以。实验三 类与对象、继承【目的】 使用类来封装对象的属性和功能;掌握类变量与实例变量,以及类方法与实例方法的
10、区别;掌握使用package和import语句。巩固以下概念:子类的继承性子类对象的创建过程成员变量的继承与隐藏方法的继承与重写【内容】 1三角形、梯形和圆形的类封装 实验要求:编写一个Java应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。具体要求如下:a) Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。b) Lader类具有类型double的上底、下底、
11、高、面积属性,具有返回面积的功能。c) Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。 程序运行效果示例: 程序运行效果如下图所示: 程序模板:AreaAndLength.javaclass Trangle double sideA,sideB,sideC,area,length; boolean boo; public Trangle(double a,double b,double c) 【代码1】 /参数a,b,c分别赋值给sideA,sideB,sideC if(【代码2】) /a,b,c构成三角形的条件表达式 【代码3】 /给boo赋值。 el
12、se 【代码4】 /给boo赋值。 double getLength() 【代码5】 /方法体,要求计算出length的值并返回 public double getArea() if(boo) double p=(sideA+sideB+sideC)/2.0; area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC) ; return area; else System.out.println(不是一个三角形,不能计算面积); return 0; public void setABC(double a,double b,double c) 【代码6】 /参数
13、a,b,c分别赋值给sideA,sideB,sideC if(【代码7】) /a,b,c构成三角形的条件表达式 【代码8】 /给boo赋值。 else 【代码9】 /给boo赋值。 class Lader double above,bottom,height,area; Lader(double a,double b,double h) 【代码10】 /方法体,将参数a,b,c分别赋值给above,bottom,height double getArea() 【代码11】 /方法体,,要求计算出area返回 class Circle double radius,area; Circle(dou
14、ble r) 【代码12】 /方法体 double getArea() 【代码13】 /方法体,要求计算出area返回 double getLength() 【代码14】 /getArea方法体的代码,要求计算出length返回 void setRadius(double newRadius) radius=newRadius; double getRadius() return radius; public class AreaAndLength public static void main(String args) double length,area; Circle circle=nu
15、ll; Trangle trangle; Lader lader; 【代码15】 /创建对象circle 【代码16】 /创建对象trangle。 【代码17】 /创建对象lader 【代码18】 / circle调用方法返回周长并赋值给length System.out.println(圆的周长:+length); 【代码19】 / circle调用方法返回面积并赋值给area System.out.println(圆的面积:+area); 【代码20】 / trangle调用方法返回周长并赋值给length System.out.println(三角形的周长:+length); 【代码21
16、】 / trangle调用方法返回面积并赋值给area System.out.println(三角形的面积:+area); 【代码22】 / lader调用方法返回面积并赋值给area System.out.println(梯形的面积:+area); 【代码23】 / trangle调用方法设置三个边,要求将三个边修改为12,34,1。 【代码24】 / trangle调用方法返回面积并赋值给area System.out.println(三角形的面积:+area); 【代码25】 / trangle调用方法返回周长并赋值给length System.out.println(三角形的周长:+l
17、ength); 实验后的练习:1. 程序中仅仅省略【代码15】,编译能通过吗?2. 程序中仅仅省略【代码16】,编译能通过吗?3. 程序中仅仅省略【代码15】,运行时出现怎样的异常提示? 4 给Trangle类增加3个方法,分别用来返回3个边:sideA、sideB和sideC。5 让AreaAndLength类中的circle对象调用方法修改半径,然后输出修改后的半径以及修改半径后的圆的面积和周长。2实例成员与类成员。 实验要求:按程序模板的要求编写源文件,要特别注意程序的输出结果,并能正确解释输出的结果。 程序运行效果示例: 程序运行效果如下图所示: 程序模板:Example.javacl
18、ass A 【代码1】 /声明一个float型实例变量a 【代码2】 /声明一个float型类变量b,即static变量b void setA(float a) 【代码3】 /将参数a的值赋值给成员变量a void setB(float b) 【代码4】 /将参数b的值赋值给成员变量b float getA() return a; float getB() return b; void inputA() System.out.println(a); static void inputB() System.out.println(b); public class Example public s
19、tatic void main(String args) 【代码5】 /通过类名操作类变量b,并赋值100 【代码6】 /通过类名调用方法inputB() A cat=new A(); A dog=new A(); 【代码7】 /cat象调用方法setA(int a)将cat的成员a的值设置为200 【代码8】 /cat调用方法setB(int b)将cat的成员b的值设置为400 【代码9】 /dog象调用方法setA(int a)将dog的成员a的值设置为150 【代码10】 /dog调用方法setB(int b)将dog的成员b的值设置为300 【代码11】 /cat调用inputA()
20、。 【代码12】 /cat调用inputB()。 【代码13】 /dog调用inputA()。 【代码14】 /dog调用inputB()。 实验后的练习:1. 将inputA()方法中的System.out.println(a);改写为System.out.println(a+b);编译是否出错?为什么?2. 将inputB()方法中的System.out.println(b);改写为System.out.println(a+b);编译是否报错?为什么? 3使用package语句与import语句。 实验要求:按实验要求使用package语句,并用import语句使用Java平台提供的包中的类以及自定义包中的类。掌握一些重要的