河北工业大学Java程序设计实验报告 (1).docx
《河北工业大学Java程序设计实验报告 (1).docx》由会员分享,可在线阅读,更多相关《河北工业大学Java程序设计实验报告 (1).docx(125页珍藏版)》请在冰豆网上搜索。
Java程序设计
实验报告
班级:
网络151
姓名:
徐毅民
学号:
153299
实验一Java语言基础
一.实验目的
掌握Java语言的基本语法、基本数据类型的使用方法,掌握从键盘输入基本类型的数据,熟练运用分支、循环等语句控制程序流程。
二.实验内容
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;
}
}
}
}
}
}
四.详细的调试和运行结果
实验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(圆