河北工业大学Java程序设计实验报告.docx

上传人:b****4 文档编号:26802747 上传时间:2023-06-22 格式:DOCX 页数:108 大小:276.67KB
下载 相关 举报
河北工业大学Java程序设计实验报告.docx_第1页
第1页 / 共108页
河北工业大学Java程序设计实验报告.docx_第2页
第2页 / 共108页
河北工业大学Java程序设计实验报告.docx_第3页
第3页 / 共108页
河北工业大学Java程序设计实验报告.docx_第4页
第4页 / 共108页
河北工业大学Java程序设计实验报告.docx_第5页
第5页 / 共108页
点击查看更多>>
下载资源
资源描述

河北工业大学Java程序设计实验报告.docx

《河北工业大学Java程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《河北工业大学Java程序设计实验报告.docx(108页珍藏版)》请在冰豆网上搜索。

河北工业大学Java程序设计实验报告.docx

河北工业大学Java程序设计实验报告

 

Java程序设计

实验报告

 

班级:

网络151

姓名:

徐毅民

学号:

153299

实验一Java语言基础

一.实验目的

掌握Java语言的基本语法、基本数据类型的使用方法,掌握从键盘输入基本类型的数据,熟练运用分支、循环等语句控制程序流程。

2.实验内容

1、编写一个Java应用程序,用户从键盘输入十名学生的信息,至少包括姓名、年龄、出生年月日、java课程实验成绩,成绩使用浮点数,年龄使用整型,程序将输出年龄、java课程实验成绩的平均值。

提示:

Scanner对象调用nextDouble()或nextFloat()可以获取用户从键盘输入的浮点数。

2、使用Arrays类实现数组排序:

使用java.util包中的Arrays类的类方法publicstaticvoidsort(doublea[])可以把参数a指定的double类型数组按升序排序;publicstaticvoidsort(doublea[],intstart,intend)可以把参数a指定的double类型数组中从位置start到end位置的值按升序排序。

给定数组inta[]={12,34,9,-23,45,6,90,123,19,45,34};从键盘读入一个整数,使用折半查找判断该整数是否在这个数组中,并将结果输出。

3、输出100~200之间的所有素数。

4、采用for循环求1至1000之内的所有“完全数”。

所谓“完全数”是指一个数,恰好等于它的因子之和。

例如,6是一个完全数,因为6的因子为1、2、3,而6=1+2+3。

5、已知XYZ+YZZ=532,其中X、Y和Z为数字,编程求出X,Y和Z的值。

三.实验步骤

实验1以最终学生信息管理系统为准

实验2代码如下:

importjava.util.Arrays;

importjava.util.Scanner;

publicclasstest2{

publicstaticvoidprintDoubleArray(doublea[]){

for(inti=0;i

System.out.print(a[i]+"");

}

System.out.println();

}

publicstaticvoidprintfIntegerArray(inta[]){

for(inti=0;i

System.out.print(a[i]+"");

}

System.out.println();

}

publicstaticvoidmain(String[]args){

doublea[]={2.6,4.6,2,8,888,569.5,454.5,100,-84.5,45};

System.out.println("原double数组a:

");

printDoubleArray(a);

Arrays.sort(a,0,a.length/2);

System.out.println("排序double数组a前一半:

");

printDoubleArray(a);

Arrays.sort(a);

System.out.println("排序整个double数组a:

");

printDoubleArray(a);

intb[]={12,34,9,-23,45,6,90,123,19,45,34};

Arrays.sort(b);

System.out.println("排序整个double数组b:

");

printfIntegerArray(b);

Scannerin=newScanner(System.in);

System.out.print("输入要查询的数字:

");

intkey=in.nextInt();

inti=Arrays.binarySearch(b,key);

if(i<0||i>=b.length){

System.out.println(i+"输入数字不在数组中!

");

}else{

System.out.println(b[i]+"在数组b第"+(i+1)+"位!

");

}

}

}

实验3代码如下:

publicclasstest3{

publicstaticbooleanisPrime(intx){

if(x==1)returnfalse;

ints=(int)Math.sqrt(x);

for(inti=2;i<=s;i++){

if(x%i==0)returnfalse;

}

returntrue;

}

publicstaticvoidmain(String[]args){

intcnt=0;

for(inti=100;i<200;i++){

if(isPrime(i)){

cnt++;

System.out.printf("%4d",i);

}

if(isPrime(i)&&cnt%10==0)System.out.println();

}

}

}

实验4代码如下:

publicclasstest4{

publicstaticbooleanisCompleteNumber(intx){

intsum=0;

for(inti=1;i

if(x%i==0)sum+=x;

}

returnx==sum;

}

publicstaticvoidmain(String[]args){

intcnt=0;

for(inti=1;i<=1000;i++){

if(isCompleteNumber(i)){

cnt++;

System.out.printf("%4d",i);

}

if(isCompleteNumber(i)&&cnt%10==0)System.out.println();

}

}

}

实验5代码如下:

publicclasstest5{

publicstaticvoidmain(String[]args){

for(intx=0;x<10;x++){

for(inty=0;y<10;y++){

for(intz=0;z<10;z++){

if(100*x+110*y+12*z==532){

System.out.println("X="+x+"Y="+y+"Z="+z);

return;

}

}

}

}

}

}

4.详细的调试和运行结果

实验2运行结果:

原double数组a:

2.64.62.08.0888.0569.5454.5100.0-84.545.0

排序double数组a前一半:

2.02.64.68.0888.0569.5454.5100.0-84.545.0

排序整个double数组a:

-84.52.02.64.68.045.0100.0454.5569.5888.0

排序整个double数组b:

-236912193434454590123

输入要查询的数字:

-23

-23在数组b第一位!

 

实验3运行结果:

101103107109113127131137139149

151157163167173179181191193197

199

 

实验4运行结果:

2357111317192329

31374143475359616771

7379838997101103107109113

127131137139149151157163167173

179181191193197199211223227229

233239241251257263269271277281

283293307311313317331337347349

353359367373379383389397401409

419421431433439443449457461463

467479487491499503509521523541

547557563569571577587593599601

607613617619631641643647653659

661673677683691701709719727733

739743751757761769773787797809

811821823827829839853857859863

877881883887907911919929937941

947953967971977983991997

实验5运行结果:

X=3Y=2Z=1

五.实验感想

通过本次从实验对java语言的基本语法有了基本了解,学会了使用控制台命令行的方式运行java程序。

实验二面向对象程序设计

一.实验目的

通过编程和上机实验,掌握类和构造方法的定义及创建对象的方法,掌握类的封装及继承原则,正确使用重载和覆盖等多态概念设计可复用方法,熟悉包、接口的使用方法,掌握面向对象的程序设计方法。

二.实验内容

1、编写MyDate类,完善上次实验中的人员信息录入,实现日期合法性判断,包括大小月和闰年。

2、声明一个Person类和派生类Student,成员变量包括学号、姓名、入学时间、身份证号、学分绩点等信息,成员方法包括开户、存款、取款、查询(余额、明细)、销户等操作。

3、定义接口Shape及其抽象方法getArea()和getPerimeter()用于计算图形和面积和周长。

定义类Rectangle(矩形)、类Circle(圆形)、类Triangle(三角形),要求这些类继承点类Coordinates()并实现接口的抽象方法。

提示:

classCoordinates

{

longx;

longy;

Coordinate(longx,longy)

{

this.x=x;

this.y=y;

}

}

4、包的定义和使用

●创建自定义包Mypackage

在存放源程序的文件夹中建立一个子文件夹Mypackage。

例如,在“E:

\java\程序”文件夹之中创建一个与包同名的子文件夹Mypackage(E:

\java\程序\Mypackage),并将编译过的class文件放入该文件夹中。

注意:

包名与文件夹名大小写要一致。

再添加环境变量classpath的路径,例如:

E:

\j2sdk1.4.2_01\lib;E:

\java\程序

●在包中创建类

YMD.java程序功能:

在源程序中,首先声明使用的包名Mypackage,然后创建YMD类,该类具有计算今年的年份并输出一个带有年月日的字符串的功能。

编译Test_YMD.java文件,然后将Test_YMD.class文件存放到Mypackage文件夹中。

●编写使用包Mypackage中Test_YMD类的程序

YMD_2.java程序功能:

给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。

程序使用了Test_YMD的方法来计算年龄。

三.实验步骤

实验1代码如下:

MyDate类:

publicclassMyDate{

privateintyear;//年

privateintmonth;//月

privateintday;//日

publicMyDate(){

this(1903,1,1);

}

publicMyDate(MyDateother){

this(other.year,other.month,other.day);

}

publicMyDate(intyear,intmonth,intday){

this.year=year;

this.month=month;

this.day=day;

}

publicstaticintgetDaysOfMonth(intyear,intmonth){

switch(month){

case1:

case3:

case5:

case7:

case8:

case10:

case12:

return31;

case4:

case6:

case9:

case11:

return30;

case2:

returnMyDate.isLeapYear(year)?

29:

28;

default:

returnInteger.MIN_VALUE;//错误

}

}

publicbooleanisValidDate(){

returnMyDate.isValidDate(this.year,this.month,this.day);

}

publicvoidsetMyDate(intyear,intmonth,intday){

this.year=year;

this.month=month;

this.day=day;

}

publicintgetYear(){

returnyear;

}

publicintgetMonth(){

returnmonth;

}

publicintgetDay(){

returnday;

}

publicstaticbooleanisValidDate(intyear,intmonth,intday){

if(day>MyDate.getDaysOfMonth(year,month)){

returnfalse;

}

returntrue;

}

publicstaticbooleanisLeapYear(intyear){

returnyear%400==0||year%100!

=0&&year%4==0;

}

publicstaticvoidmain(Stringargs[]){

intsel,y,m,d;

Scannerin=newScanner(System.in);

while(true){

System.out.println("请输入年月日:

");

y=in.nextInt();

m=in.nextInt();

d=in.nextInt();

if(MyDate.isValidDate(y,m,d)){

System.out.println(y+"年"+m+"月"+d+"日"+"信息正确!

");

}else{

System.out.println(y+"年"+m+"月"+d+"日"+"信息不正确!

");

}

System.out.println("是否继续输入?

(1:

是,0:

否)");

sel=in.nextInt();if(sel==0)break;

}

}

}

实验2以最终学生信息管理系统为准

实验3代码如下:

Shape接口:

publicinterfaceShape{

publicabstractdoublegetArea();

publicabstractdoublegetPerimeter();

}

Rectangle类:

publicclassRectangleimplementsShape{

privatedoublewidth;

privatedoubleheight;

privateCoordinatec;//矩形左下角的点

publicRectangle(){

this.width=0;

this.height=0;

this.c=newCoordinate(0,0);

}

publicRectangle(doublewidth,doubleheight,intx,inty){

this.width=width;

this.height=height;

this.c=newCoordinate(x,y);

}

@Override

publicdoublegetArea(){

returnthis.width*this.height;

}

@Override

publicdoublegetPerimeter(){

return2*(this.width+this.height);

}

}

Circle类

publicclassCircleimplementsShape{

privatedoubleradius;

privateCoordinatecenter;

publicCircle(){

this.radius=0;

this.center=newCoordinate(0,0);

}

publicCircle(doubleradius,longx,longy){

this.radius=radius;

this.center=newCoordinate(x,y);

}

@Override

publicdoublegetArea(){

returnMath.PI*this.radius*this.radius;

}

@Override

publicdoublegetPerimeter(){

return2*Math.PI*this.radius;

}

}

Triangle类

publicclassTriangleimplementsShape{

privatedoublea,b,c;

privateCoordinatec1,c2,c3;

publicTriangle(){

this.a=0;

this.b=0;

this.c=0;

this.c1=newCoordinate(0,0);

this.c2=newCoordinate(0,0);

this.c3=newCoordinate(0,0);

}

@Override

publicdoublegetArea(){

doubles=this.getPerimeter()/2;

returnMath.sqrt(s*(s-a)*(s-b)*(s-c));

}

@Override

publicdoublegetPerimeter(){

returnthis.a+this.b+this.c;

}

publicstaticbooleanisVaild(doublea,doubleb,doublec){

if(a+b<=c||a+c<=b||b+c<=a){

returnfalse;

}

if(Math.abs(a-b)>=c||Math.abs(a-c)>=b||Math.abs(b-c)>=a){

returnfalse;

}

returntrue;

}

}

测试类

publicclasstest3{

publicstaticvoidmain(String[]args){

Shapeshape;

Scannerin=newScanner(System.in);

System.out.println("请输入矩形的宽、高,左下角点的横坐标、纵坐标:

");

shape=newRectangle(in.nextDouble(),in.nextDouble(),in.nextInt(),in.nextInt());

System.out.println("矩形的面积:

"+shape.getArea()+"周长"+shape.getPerimeter());

System.out.println("请输入圆的半径,圆心的横坐标、纵坐标:

");

shape=newCircle(in.nextDouble(),in.nextInt(),in.nextInt());

System.out.println("圆形的面积:

"+shape.getArea()+"周长"+shape.getPerimeter());

doublea,b,c;

System.out.println("请输入三角形的三条边长:

");

a=in.nextDouble();b=in.nextDouble();c=in.nextDouble();

while(!

Triangle.isVaild(a,b,c)){

System.out.println("这不是一个三角形,请重新输入三条边长:

");

a=in.nextDouble();b=in.nextDouble();c=in.nextDouble();

}

System.out.println("请分别输入三个顶点的横坐标、纵坐标:

");

shape=newTriangle(a,b,c,in.nextInt(),in.nextInt(),in.nextInt(),in.nextInt(),in.nextInt(),in.next

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1