java实验程序.docx
《java实验程序.docx》由会员分享,可在线阅读,更多相关《java实验程序.docx(42页珍藏版)》请在冰豆网上搜索。
![java实验程序.docx](https://file1.bdocx.com/fileroot1/2023-1/2/635435d3-08c3-464d-83bb-7207bd5aaa4a/635435d3-08c3-464d-83bb-7207bd5aaa4a1.gif)
java实验程序
1.编写JavaApplication程序,输出1900年到2000年之间的所有润年。
(闰年的判断条件:
能被4整除且不能被100整除,或能被400整除);
publicclassyear{
publicstaticvoidmain(String[]args){
inti;
for(i=1900;i<=2000;i++){
if(i%4==0&&i%100!
=0||i%400==0)
System.out.println(+i);
}
}
}
2.编写JavaAppet程序打印“水仙花”数(它的个、十、百位数字的立方的和等于该数本身,如:
153=1^3+5^3+3^3)importjava.awt.*;
importjava.applet.Applet;
publicclassflowersextendsApplet{
publicvoidpaint(Graphicsg){
inti,j,r=20;
inta,b,c;
for(i=100;i<=999;i++){
j=i;
a=j%10;
b=(j/10)%10;
c=j/100;
if(i==a*a*a+b*b*b+c*c*c){
g.drawString("水仙花"+i,20,r);
r=r+20;
}
}
}
}
3.编写JavaApplication程序,分别用do-while和for循环计算1+1/2!
+1/3!
+1/4!
...的前20项和
publicclasscount{
publicstaticvoidmain(String[]args){
inti,j=1;
doubleresult=0;
for(i=1;i<=20;i++){
j=j*i;
result=result+1.0/j;
}
System.out.println("计算结果="+result);
}
}
publicclasscount1{
publicstaticvoidmain(String[]args){
inti,j;
i=j=1;
doubleresult=0;
do{
j=j*i;
result=result+1.0/j;
i++;
}while(i<=20);
System.out.println("计算结果="+result);
}
}
1.定义一个学生类(Student),属性有private的名字(name),public的年龄(age),专业(specialty)和封装name属性的方法:
setName(),getName(),getspecialty()编写Application,创建一个学生对象,设置name和age属性值,然后调用一个方法(此方法将对象作为参数传递,在方法中打印出学生的名字name和年龄age)。
(学生类仅包含静态成员变量和方法。
)
classStudent{
privateStringname;//姓名
publicintage;//年龄
publicStringspecialty;//专业
publicvoidsetname(Strings){
name=s;
}
publicvoidgetname(){
System.out.println("姓名:
"+name);
}
publicvoidsetage(intmyage){
age=myage;
}
publicvoidgetage(){
System.out.println("年龄:
"+age);
}
publicvoidsetspecialty(Stringsubject){
specialty=subject;
}
publicvoidgetspecialty(){
System.out.println("专业:
"+specialty);
}
}
publicclassStu{
publicstaticvoidmain(Stringargs[]){
Studenta=newStudent();
a.setname("小明");
a.getname();
a.setage(20);
a.getage();
a.setspecialty("计算机科学与技术");
a.getspecialty();
}
}
2.定义一个类Point,代表一个点,public属性有x和y,方法有显示点坐标show(),构造函数有两个参数分别给x,y赋值,在main方法中构造两个对象,再创建一方法(getMiddle)为取两个点构成线段的中点的坐标,参数为2个点对象,调用此方法后得到一个新的点,编写Application,显示该对象的坐标值。
classpoint{
publicdoublex;//横坐标
publicdoubley;//纵坐标
publicvoidintxy(doublex0,doubley0){
x=x0;
y=y0;
}
publicvoidshow(){
System.out.print("("+x+","+y+")");
}
publicvoidgetMiddle(pointa,pointb){
x=(a.x+b.x)/2;
y=(a.y+b.y)/2;
show();
}
}
publicclasspoin{
publicstaticvoidmain(Stringargs[]){
pointa=newpoint();
pointb=newpoint();
pointc=newpoint();
a.intxy(5.0,6.0);
b.intxy(7.0,8.0);
System.out.print("两个点坐标分别为:
");
a.show();
b.show();
System.out.print("两个点中点坐标为:
");
c.getMiddle(a,b);
}
}
定义一个复数(z=x+iy)类Complex,包含两个属性:
实部x和虚部y默认构造函数Complex(),设置x=0,y=0构造函数:
Complex(inti,intj)显示复数的方法:
showComp()将其显示为如5+8i或5-8i的形式。
求两个复数的和的方法:
(参数是两个复数类对象,返回值是复数类对象)publicComplexaddComp(ComplexC1,ComplexC2)求两个复数的差的方法:
(参数是两个复数类对象,返回值是复数类对象)publicComplexsubComp(ComplexC1,ComplexC2)求两个复数的乘积的方法:
(参数是两个复数类对象,返回值是复数类对象,新复数实部=两复数实部乘积-两复数虚部乘积,新复数虚部=两复数实部与虚部交叉乘积之和,)publicComplexmultiComp(ComplexC1,ComplexC2)比较两个复数是否相等的方法(参数是两个复数类对象,返回值是boolean类型)publicbooleanequalComp(ComplexC1,ComplexC2)在Application中测试该类的方法,实部x和虚部y可由main方法参数提供输入。
classComplex{
publicintx,y;
publicvoidComplex(inti,intj){
x=i;
y=j;
}
publicvoidshowComp(){
if(y>0)
System.out.println("z="+x+"+"+y+"i");
else
System.out.println("z="+x+y+"i");
}
publicComplexaddComp(ComplexC1,ComplexC2){
x=C1.x+C2.x;
y=C1.y+C2.y;
System.out.println("两个复数的和为:
");
showComp();
returnC1;
}
publicComplexsubComp(ComplexC1,ComplexC2){
x=C1.x-C2.x;
y=C1.y-C2.y;
System.out.println("两个复数的差为:
");
showComp();
returnC1;
}
publicComplexmultiComp(ComplexC1,ComplexC2){
x=C1.x*C2.x-C1.y*C2.y;
y=C1.x*C2.y-C2.x*C1.y;
System.out.println("两个复数的积为:
");
showComp();
returnC1;
}
publicbooleanequalComp(ComplexC1,ComplexC2){
inta,b;
booleanbool=false;
a=C1.x-C2.x;
b=C1.y-C2.y;
if(a==0&&b==0){
bool=true;
System.out.println("两个复数相等!
");
}
else{
System.out.println("两个复数不等!
");
}
returnbool;
}
}
publicclassCOMP{
publicstaticvoidmain(Stringargs[]){
ComplexA=newComplex();
ComplexB=newComplex();
ComplexC=newComplex();
A.Complex(3,5);
B.Complex(2,3);
System.out.println("两个复数分别为:
");
A.showComp();
B.showComp();
C.addComp(A,B);
C.subComp(A,B);
C.multiComp(A,B);
C.equalComp(A,B);
}
}
1.分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求:
(1) Point2D有两个整型成员变量x,y(分别为二维空间的X,Y方向坐标),Point2D的构造方法要实现对其成员变量x,y的初始化。
(2)Point2D有一个void型成员方法offset(inta,intb),它可以实现Point2D的平移。
(3)Point3D是Point2D的直接子类,它有有三个整型成员变量x,y,z(分别为三维空间的X,Y,Z方向坐标),Point3D有两个构造方法:
Point3D(intx,inty,intz)和Point3D(Point2Dp,intz),两者均可实现对Point3D的成员变量x,y,z的初始化。
(4)Point3D有一个void型成员方法offset(inta,intb,intc),该方法可以实现Point3D的平移。
(5)在Point3D中的主函数main()中实例化两个Point2D的对象p2d1,p2d2,打印出它们之间的距离,再实例化两个Point2D的对象p3d1,p3d2,打印出他们之间的距离。
classPoint2D{
publicintx,y;
voidoffset(inta,intb){
this.x=x-a;
this.y=y-b;
System.out.print("x="+x+"y="+y);
}
Point2D(intx,inty){
this.x=x;
this.y=y;
}
publicvoidshow(Point2Dp2d1,Point2Dp2d2){
x=(p2d1.x-p2d2.x);
y=(p2d1.y-p2d2.y);
x=x*x+y*y;
System.out.println(+Math.sqrt(x));
}
}
classPoint3DextendsPoint2D{
intz;
publicPoint3D(intx,inty,intz){
super(x,y);
this.z=z;
}
publicPoint3D(Point2Dp,intz){
super(p.x,p.y);
this.z=z;
}
voidoffset(inta,intb,intc){
super.offset(a,b);
this.z=z-c;
System.out.println("z="+z);
}
publicvoidshow1(Point3Dp3d1,Point3Dp3d2){
x=(p3d1.x-p3d2.x);
y=(p3d1.y-p3d2.y);
z=(p3d1.z-p3d2.z);
x=x*x+y*y+z*z;
System.out.println(+Math.sqrt(x));
}
}
classpoin{
publicstaticvoidmain(Stringargs[]){
Point2Dp2d1=newPoint2D(1,2);
Point2Dp2d2=newPoint2D(3,4);
Point2Dp2d3=newPoint2D(6,2);
Point3Dp3d1=newPoint3D(1,2,3);
Point3Dp3d2=newPoint3D(4,5,6);
Point3Dp3d3=newPoint3D(6,2,1);
//Point3Dp3d3=newPoint3D(p2d3,1);
System.out.print("p2d1的平移后的坐标");
p2d1.offset(0,3);
System.out.println("");
System.out.print("p3d1的平移后的坐标");
p3d1.offset(1,4,3);
System.out.print("p2d2和p2d3之间的距离=");
p2d2.show(p2d2,p2d3);
System.out.print("p3d2和p3d3之间的距离=");
p3d2.show1(p3d2,p3d3);
}
}
2.定义抽象类Shape,抽象方法为showArea(),求出面积并显示,定义矩形类Rectangle,正方形类Square,圆类Circle,根据各自的属性,用showArea方法求出各自的面积,在main方法中构造3个对象,调用showArea方法。
定义接口DiagArea,其中包含方法doublegetDiagonal()求对角线长,doublegetArea()求面积,定义一个矩形类,实现此接口,并自行扩充成员变量和方法,定义一个正方形类继承矩形类(如矩形有长w和宽h,正方形有边x,并有相应的构造函数,有一个方法中一次直接显示边长、面积和对角线长),在另一类中的主方法里使用测试该类。
interfaceDiagArea{
publicdoublegetDiagonal();//求对角线长
publicdoublegetArea();//求面积
}
abstractclassShape{
abstractpublicvoidShowArea();//求面积
}
classRectangleextendsShapeimplementsDiagArea{
doublelength,width;
publicvoidShowArea(){
System.out.println("通过抽象方法求出的矩形面积="+length*width);
}
publicdoublegetDiagonal(){
return(Math.pow(length*length+width*width,0.5));
}
publicdoublegetArea(){
returnlength*width;
}
}
classSquareextendsShapeimplementsDiagArea{
doubleside;
publicvoidShowArea(){
System.out.println("通过抽象方法求出的正方形的面积="+side*side);}
publicdoublegetDiagonal(){
return(Math.pow(2*side*side,0.5));
}
publicdoublegetArea(){
returnside*side;
}
}
classCircleextendsShapeimplementsDiagArea{
doubleradius;
publicvoidShowArea(){
System.out.println("通过抽象方法求出的圆的面积="+3.14*radius*radius);}
publicdoublegetDiagonal(){
returnradius;
}
publicdoublegetArea(){
return3.14*radius*radius;
}
}
classExam4_2{
publicstaticvoidmain(Stringargs[]){
RectangleA=newRectangle();
SquareB=newSquare();
CircleC=newCircle();
A.length=2;
A.width=3;
B.side=4;
C.radius=7;
A.ShowArea();
System.out.println("通过接口求出的矩形的面积="+A.getArea());
System.out.println("通过接口求出的矩形的对角线="+A.getDiagonal());
B.ShowArea();
System.out.println("通过接口求出的正方形的面积="+B.getArea());
System.out.println("通过接口求出的正方形的对角线="+B.getDiagonal());
C.ShowArea();
System.out.println("通过接口求出的圆的面积="+C.getArea());
System.out.println("通过接口求出的圆的半径="+C.getDiagonal());
}
}
1.从命令行得到5个整数,放入一整型数组,然后打印输出,要求:
如果输入数据不为整数,要捕获Integer.parseInt()产生的异常,显示“请输入整数”,捕获输入参数不足5个的异常(数组越界),显示“请输入至少5个整数”。
publicclassExam5_1{
publicstaticvoidmain(Stringargs[]){
try{
if(args.length<5){
ArrayIndexOutOfBoundsExceptione=newArrayIndexOutOfBoundsException();
throwe;
}
for(inti=0;i<=4;i++){
Integer.parseInt(args[i]);
}
for(inti=0;i<=4;i++){
System.out.print(args[i]+"");
}
}
catch(ArrayIndexOutOfBoundsExceptione){
System.out.println("请输入至少5个整数!
");
}
catch(NumberFormatExceptione){
System.out.println("请输入整数!
");
}
finally{
System.out.println("处理完毕!
");}
}
}
2.写一个方法voidsanjiao(inta,intb,intc),判断三个参数是否能构成一个三角形,如果不能则抛出异常IllegalArgumentException,显示异常信息a,b,c+”不能构成三角形”,如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个整数,调用此方法,并捕获异常。
publicclassExam5_2{
publicstaticvoidmain(Stringargs[]){
inta=Integer.parseInt(args[0]);
intb=Integer.parseInt(args[1]);
intc=Integer.parseInt(args[2]);
sanjiao(a,b,c);
}
staticvoidsanjiao(inta,intb,intc){
try{
if((a+b<=c)||(a+c<=b)||(b+c<=a)){
IllegalArgumentExceptione=newIllegalArgumentException();
throwe;
}
System.out.println(a+","+b+","+c+"能构成三角形!
");
}
catch(IllegalArgumentExceptione){
System.out.println(a+","+b+","+c+"不能构成三角形!
");
}
finally{
System.out.println("处理完毕!
");
}
}
}
3.自定义类Sanj,其中有成员x,y,z,作为三边长,构造方法Sanj(a,b,c)分别给x,y,z赋值,方法求面积getArea和显示三角形信息(三个边长)showInfo,这2个方法中当三条边不能构成一个三角形时要抛出自定义异常NotSanjiaoException,否则显示正确信息。
在另外一个类中的主方法中构造一个Sanj对象(三边为命令行输入的三个整数),显示三角形信息和面积,要求捕获异常。
public