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