JAVA实验报告.docx
《JAVA实验报告.docx》由会员分享,可在线阅读,更多相关《JAVA实验报告.docx(45页珍藏版)》请在冰豆网上搜索。
JAVA实验报告
学生实验报告册
(理工类)
课程名称:
面向对象程序设计专业班级:
16计算机科学与技术(专转本)
学生学号:
学生姓名:
张义丹
所属院部:
计算机工程指导教师:
刘晶
2016——2017学年第2学期
金陵科技学院教务处制
实验报告书写要求
实验报告上交电子稿,标题采用四号黑体,正文采用小四号宋体,单倍行距。
实验报告书写说明
实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。
教师可根据学科特点和实验具体要求增加项目。
填写注意事项
(1)细致观察,及时、准确、如实记录。
(2)准确说明,层次清晰。
(3)尽量采用专用术语来说明事物。
(4)外文、符号、公式要准确,应使用统一规定的名词和符号。
(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。
实验报告批改说明
实验报告的批改要及时、认真、仔细,一律用红色笔批改。
实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行。
实验项目名称:
Java编程基础实验学时:
6
同组学生姓名:
————实验地点:
工科楼A101
实验日期:
实验成绩:
批改教师:
刘晶批改时间:
实验1Java编程基础
一、实验目的和要求
(1)熟练掌握JDK1.6及Eclipse4.2编写调试Java应用程序及Java小程序的方法;
(2)熟练掌握Java应用程序的结构;
(3)了解Java语言的特点,基本语句、运算符及表达式的使用方法;
(4)熟练掌握常见数据类型的使用;
(5)熟练掌握if-else、switch、while、do-while、for、continue、break、return语句的使用方法;
(6)熟练掌握数组和字符串的使用;
(7)调试程序要记录调试过程中出现的问题及解决办法;
(8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;
(9)做完实验后给出本实验的实验报告。
二、实验仪器和设备
奔腾以上计算机,Windows操作系统,装有JDK1.6和Eclipse4.2软件。
三、实验过程
(1)分别使用JDK命令行和Eclipse编译运行Java应用程序;适当添加注释信息,通过javadoc生成注释文档;为主方法传递参数“Helloworld”字符串,并输出,记录操作过程。
publicclassHello
{
publicstaticvoidmain(Stringargs[])
{
}
}
(2)分别使用JDK命令行和Eclipse编译JavaApplet,并建立HTML文档运行该Applet。
压缩生成".jar"文件。
记录操作过程。
importjava.awt.*;
publicclassHelloAppletextendsApplet
{
publicvoidpaint(Graphicsg)
{
g.setColor(Color.red);
g.drawString("Hello!
",20,20);
}
}
(3)根据变量score中存放的考试分数,输出对应的等级。
要求从键盘输入学生成绩,
60分以下为D等;60~69为C等;70~89为B等;90~100为A等。
(4)编写一个JavaApplication程序,输出区间[200,300]上的所有素数,将其用数组prime[]保存,并以每10个一行的形式显示运行结果。
(5)输出下列数字形式,要求用二维数组完成。
①n=4
0000
0111
0122
0123
②n=4
1
121
12321
1234321
(6)求二维数组的鞍点,即该位置上的元素在该行上最大,在列上最小。
也可能无鞍点。
(7)分析下列程序的输出结果,掌握equals()方法和“==”的区别。
classStringTest2{
publicstaticvoidmain(Stringargs[]){
Strings1="Thisisthesecondstring.";
Strings2="Thisisthesecondstring.";
Strings3=newString("Thisisthesecondstring.");
Strings4=newString(s1);
Strings5=s1;
booleanresult121=s1.equals(s2);
booleanresult122=s1==s2;
booleanresult131=s1.equals(s3);
booleanresult132=s1==s3;
booleanresult141=s1.equals(s4);
booleanresult142=s1==s4;
booleanresult151=s1.equals(s5);
booleanresult152=s1==s5;
}
}
(8)判断回文字符串
回文是一种“从前向后读”和“从后向前读”都相同的字符串。
如“rotor”是一个回文字符串。
程序中使用了两种算法来判断回文字符串:
算法一:
分别从前向后和从后向前依次获得原串str的一个字符ch1、ch2,比较ch1和ch2,如果不相等,则str肯定不是回文串,yes=false,立即退出循环:
否则继续比较,直到字符全部比较完,yes的值仍为true,才能肯定str是回文串。
算法二:
将原串str反转成temp串,再比较两串,如果相等则是回文字符串。
(9)使用String类的compareTo(Strings)方法,对以下字符串从小到大排序:
“melon”,“apple”,“pear”,“banana”,显示输出排序结果。
要求:
(1)编译调试程序之前应配置好环境变量;
(2)要分别掌握用JDK命令行和Eclipse集成开发环境调试Java程序;
(3)注意Java两大类程序:
应用程序和小程序的区别。
程序清单:
(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。
)
(1)主方法传递参数“Helloworld”字符串,并输出
publicclassHello{
publicHello(){
System.out.println("HelloWorld!
");
}
publicstaticvoidmain(Stringargs[]){
newHello();
}
}
(2)Eclipse编译JavaApplet
importjava.awt.*;
import
publicclassHelloAppletextendsApplet{
intheight,width;
publicvoidinit(){
this.height=100;
this.width=300;
}
publicvoidpaint(Graphicsg){
g.setColor(Color.red);
g.drawString("Hello!
",20,20);
}
}
(3)
packageb;
import
publicclassTest{
publicstaticvoidmain(Stringargs[]){
intscore;
//chargrade;
System.out.println("请输入分数按回车");
Scannerreader=newScanner(System.in);
score=reader.nextInt();
if(score>=90&&score<=100){
System.out.println("A");
}
elseif(score>=70&&score<=89){
System.out.println("B");
}
elseif(score>=60&&score<=69){
System.out.println("C");
}
elseif(score<60){
System.out.println("D");
}
else{
System.out.println("数据错误");
}
}
}
(4)
publicclassLim{
publicstaticvoidmain(String[]args){
int[]prime=calculation(20,200,300);
for(inti=0;iif(prime[i]!
=0){
if(i%10==0&&i!
=0)
System.out.println();
System.out.print(prime[i]+"");//打印数据
}
}
}
publicstaticint[]calculation(intlength,intstart,intend){
intj;
intstep=0;
int[]prime=newint[length];
for(inti=start;i<=end;i++)
{
j=2;
while(i%j!
=0){
j++;
}
if(j==i)
{
prime[step]=i;
step++;
}
}
returnprime;
}
}
(5)
publicclassshuzu{
publicstaticvoidmain(Stringargs[]){
inti,j;
intarr[][]=newint[4][];
for(i=0;iarr[i]=newint[arr.length];
for(i=0;i<4;i++)
for(j=3;j>=i;j--){
arr[i][j]=i;
}
for(j=0;j<4;j++){
for(i=3;i>=j;i--){
arr[i][j]=j;
}
}
for(i=0;i<=3;i++){
for(j=0;j<=3;j++){
System.out.print(arr[i][j]);
System.out.print("");
}
System.out.println();
}
}
}
publicclassShuzu{
publicstaticvoidmain(Stringargs[]){
intnum[][]=newint[4][];
for(inti=0;inum[i]=newint[2*i+1];
for(intm=0;mSystem.out.print("");
}
intk=i+1;
for(intj=0;jif(j<=i)
num[i][j]=j+1;
else{
k--;
num[i][j]=k;
}
System.out.print(num[i][j]+"");
}
System.out.println();
}
}
}
(6)
publicclasstest{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
int[][]mat={{11,12,13},{4,5,6},{7,8,9}};
for(inti=0;i{
for(intj=0;jSystem.out.print(mat[i][j]+"");
System.out.println();
}
booleanfind=false;//找到鞍点标记
introw=0;//第1行下标
intmax=0;//记录当前行最大值的列下标
while(!
find&&row{
max=0;//初始设每行第1列值最大
for(intj=1;jif(mat[row][j]>mat[row][max])//mat[row][max]为该行最大值
max=j;
booleanyes=true;//再判断mat[row][max]是否在列上最小
intj=0;
while(yes&&j{
if(mat[j][max]yes=false;
j++;
}
if(yes)
find=true;
else
row++;
}
if(find)
System.out.println("Thedort:
"+mat[row][max]);
else
System.out.println("Thedort:
null");
}
}
(8)import
publicclassHuiWenTest{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
System.out.println("请输入一个字符串");
@SuppressWarnings("resource")
Scannerinput=newScanner(System.in);
Stringstr=input.next();
StringBuildersb=newStringBuilder(str);
sb.reverse();//将Sr倒置的方法
StringnewStr=newString(sb);
if(str.equals(newStr)){
System.out.println(str+"是回文字符串");
}else{
System.out.println(str+"不是回文字符串");
}
}
}
(9)importjava.util.*;
publicclassSortString{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
String[]a={"melon","apple","pear","banana"};
String[]b=Arrays.copyOf(a,a.length);
System.out.println("使用用户编写的SortString类,按字典序排列数组a:
");
SortString.sort(a);
System.out.println("排序结果是:
");
for(Strings:
a){
System.out.print(""+s);
}
System.out.println("");
System.out.println("使用类库中的Arrays类,按字典序排列数组b:
");
Arrays.sort(b);
System.out.println("排序结果是:
");
for(Strings:
b){
System.out.print(""+s);
}
}
四、实验结果与分析(程序运行结果及其分析)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
五、实验体会(遇到问题及解决办法,编程后的心得体会)
在这次实验中,我知道了eclipse和jdk运行程序的区别,jdk比较麻烦一些,需要配置变量。
在实验中,配置jdk的环境变量要注意它的path和classpath,如果classpath本身就有,可以在后面加分号,这样不影响其它的classpath的使用。
学会了如何生成注释文档,主函数传递参数的方法,还有压缩文件,实验中还对数组的创建和使用进行了练习,还有一些类的应用。
实验项目名称:
面向对象编程实验学时:
8
同组学生姓名:
————实验地点:
工科楼A101
实验日期:
实验成绩:
批改教师:
刘晶批改时间:
实验2面向对象编程
一、实验目的和要求
(1)熟练掌握Java语言类定义的基本语法;
(2)熟练掌握类成员的访问控制,对象建立的方法;
(3)熟练掌握类构造方法、成员方法的定义和重载;
(4)熟练掌握类继承、多态和抽象性;
(5)熟练掌握接口的定义和实现方法;
(6)掌握基本的异常处理方法;
(7)调试程序要记录调试过程中出现的问题及解决办法;
(8)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;
(9)做完实验后给出本实验的实验报告。
二、实验仪器和设备
奔腾以上计算机,Windows操作系统,装有JDK1.6和Eclipse4.2软件。
三、实验过程
(1)定义一个Man类,保存在Man.java文件中,类中包含说话方法如下:
publicclassMan
{
publicvoidsay()
{
“我是中国人!
”);
}
}
publicclassChina
{
publicstaticvoidmain(String[]args)
{
Manlihua=newMan();
lihua.say();
}
}
在China类中引用Man类,输出显示“我是中国人!
”。
试着去掉Man类的public修饰,看看会发生什么情况?
(2)设计复数类,成员变量包括实部和虚部,成员方法包括实现复数加法、减法、字符串描述、比较是否相等等操作。
(3)包的建立与使用:
设计计算器类Calculator,计算加、减、乘、除和立方体体积,并且打包为mypackage。
观察源文件目录下是否生成了mypackage文件夹,在该文件夹中是否有Calculate.class文件。
编辑PackageDemo.java,保存在Calculator.java同一目录下,引用计算器类的各方法显示计算结果。
(4)试编码实现简单的银行业务:
处理简单帐户存取款、查询。
编写银行帐户类BankAccount,包含数据成员:
余额(balance)、利率(interest);操作方法:
查询余额、存款、取款、查询利率、设置利率。
再编写主类UseAccount,包含main()方法,创建BankAccount类的对象,并完成相应操作。
(5)假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均超过80分才能够通过。
根据上述要求,请完成以下Java类的设计:
1)设计一个基类Student描述学生的共同特征。
2)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类。
3)设计一个描述研究生的类Graduate,该类继承并扩展Student类。
4)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息。
(6)设计三角形类,继承图形抽象类,计算三角形面积和周长。
(7)试编码实现多态在工资系统中的应用:
给出一个根据雇员类型利用abstract方法和多态性完成工资单计算的程序。
Employee是抽象类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。
该例的Employee的每个子类都声明为final,因为不需要再继承它们生成子类。
在主测试类Test中测试各类雇员工资计算结果。
提示:
对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都是从超类Employee派生出的。
在超类中声明earnings()为抽象方法,并且对于每个子类都提供恰当的earnings()的实现方法。
为了计算雇员的工资,程序仅仅使用雇员对象的一个超类引用并调用earnings()方法。
在一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现。
程序依次使用数组的每个元素(Employee引用)调用每个对象的earnings()方法。
Employee类定义如下:
abstractclassEmployee
{
privateStringfirstName;
privateStringlastName;
publicEmployee(Stringfirst,Stringlast)
{
firstName=first;
lastName=last;
}
publicStringgetEmployeeName()
{
returnfirstName;
}
publicStringgetLastName()
{
returnlastName;
}
publicStringtoString()
{
returnfirstName+lastName;
}
publicabstractStringearnings();
}
(8)设计圆柱体类和圆椎体类,继承圆类Circle并实现体积接口Volume,计算表面积和体积。
(9)定