实验题目终极报告(支持原创) 1. 编一程序,求两个正整数m、n的最大公约数。要求程序中有两个方法,分别使用循环和递归,最后在主方法中两次求解并输出最大公约数。提示:用辗转相除法。方法(1) 求m除n的余数r;(2) 如果r为0,则n为最大公约数,结束。否则转(3);(3) 用n置m,用r置n ,回到(1)。 代码: //递归方法实现最大公约数 import java.util.Scanner;//控制输入 public class Func { public static int fun(int m,int n) { int temp = 0; if(m % n == 0) { return n; } else { return fun(n,m%n);// 递归方法实现 } } public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int inputA, inputB; inputA = in.nextInt(); inputB = in.nextInt(); System.out.println(fun(inputA, inputB)); } } //使用循环的方法 import java.util.Scanner; public class Func { public static int fun(int m,int n) { int temp; while(n > 0) {
temp = m % n; if(temp == 0) { break; } m = n; n = temp; } return n; } public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int inputA, inputB; inputA = in.nextInt(); inputB = in.nextInt(); System.out.println(fun(inputA, inputB)); } } //一直出现错误java.lang.NoSuchMethodError:main; //经过重新创建了一个空间竟然可以了。 截图:
2. 使用类编写程序(在程序中定义类,然后在主方法中创建类的对象,并调用该类中的方法,观察所得结果。) j工具(Tool)类 属性:名称,制造年份; 方法:(1) 构造方法用于设置属性的初始值; (2) 打印所有的属性; (3) 设置某些属性的值。 在主方法中创建Tool类的对象,并设置初值:名称为“剪刀”,制造年份为2000 然后调用该类对象的方法来打印所有的属性;最后在修改该对象的名称(如改为“锤子”)和制造年份后再一次输出属性。 代码部分: import java.util.Scanner; //import java.io.*; public class Tool { private String name; private int date; public Tool(String s, int d) { name = s; date = d; } public void print() { System.out.println("tool name:"+name); System.out.println("tool date:"+date); } public void ini() { System.out.println("input tool name"); String sName; Scanner in = new Scanner(System.in); sName = in.next(); name = sName; int d; d = in.nextInt(); date =d; } public static void main(String[] args) { Tool t1 = new Tool("hammer",2000); t1.print(); t1.ini(); t1.print(); } } (2) 房子(House)类 属性:名称,长度,宽度,高度; (长宽高均为整数) 方法:(1) 构造方法用于设置属性的初始值; (2) 打印所有的属性; (3) 设置某些属性的值。 在主方法中创建House类的对象,并设置初值如下:名称为“普通房子”;长度为20,宽度为10,高度为3。然后调用该对象的方法来输出属性;此后在修改该对象的名称(如改为“教室”)和宽度后再一次输出属性。 代码部分: public class House { private String sName; private float fLength; private float fWidth; private float fHeight; public House(String s, float l,float w,float h) { sName = s; fLength = l; fWidth = w; fHeight = h; } public void show() { System.out.println("房子的名称为:"+sName); System.out.println("房子的长度为:"+fLength); System.out.println("房子的宽度为:"+fWidth); System.out.println("房子的高度为:"+fHeight); } // 重置房子的名称; public void ini(String s) { sName = s; } // 重置房子的名称和长度; public void ini(String s, float f) { sName = s; fLength = f; } // 重置房子的名称,长度,宽度 public void ini(String s, float l, float w) { sName = s; fLength = l; fWidth = w; } // 重置房子的名称,长度,宽度,高度; public void ini(String s, float l,float w, float h) { sName = s; fLength = l; fWidth = w; fHeight = h; } public static void main(String[] args) { House h1 = new House("普通房子",20,10,3); h1.show(); h1.ini("教室"); h1.show(); } } 截图: 3. 编写一个包含圆类的程序,并为圆类设计几个构造方法,编译并运行它。 代码: public class XiTi3 { public static void main(String args[]) { Circle c1=new Circle(1, 1, 3); c1.print(); System.out.println("周长:" + c1.zc() ); } }
class Circle { int x,y,r; //圆心坐标及半径 Circle() { x=y=r=0; } //无参构造方法 Circle(int x1, int y1, int r1) //有参构造方法 { x=x1; y=y1; r=r1; } void setXY(int x1, int y1) { x=x1; y=y1; } void setR(int r1) { r=r1; } double zc() { return 2*3.1416*r; } //计算周长 double mj() { return 3.1416*r*r; } //计算面积 void print() { System.out.println("圆心位置:("+x+"," +y+ ")"); System.out.println("圆的半径:"+r); } } 截图: 4. 利用题2中的类和继承编写程序。 ( 在主方法中创建子类的对象,并调用类中的方法,观察所得结果。) (1) 父类:房子(House) 子类:教室(Classroom),从房子类继承 增加属性:学校名称; 方法:(1) 构造方法首先调用父类的构造方法,然后给学校名称 赋初值; (2) 显示所有的属性。 在主方法中建一对象,设置学校名”中国矿业大学”,再输出属性。 (2) 父类:工具(Tool) 子类:钢笔(Pen),从工具类继承 增加属性:重量; 方法:(1) 构造方法首先使用父类的构造方法,再给重量赋初值; (2) 显示所有的属性。 在主方法中建一对象,设置重量为20,然后输出属性。 public class House { String sName; float fLength; float fWidth; float fHeight; public House(String s, float l,float w,float h) { this.sName = s; this.fLength = l; this.fWidth = w; this.fHeight = h; } public void show() { System.out.println("House name:"+sName); System.out.println("House length:"+fLength); System.out.println("House width:"+fWidth); System.out.println("House height:"+fHeight); } public void ini(String s) { sName = s; } public static void main(String[] args) { Classroom Cr = new Classroom("中国矿业大学","教四",20,10,3); Cr.show(); } } class Classroom extends House { private String SchoolName; public Classroom(String sn,String n,float l,float w,float h) { super(n,l,w,h); SchoolName = sn; } public void show() { System.out.println("School name:"+ SchoolName); System.out.println("House name:"+sName); System.out.println("House length:"+fLength); System.out.println("House width:"+fWidth); System.out.println("House height:"+fHeight); } } (2)父类为工具类的实验代码 import java.util.Scanner; public class Tool { String name; int date; public Tool(String s, int d) { name = s; date = d; } public void print() { System.out.println("tool name:"+name); System.out.println("tool date:"+date); } public void ini() { System.out.println("input tool name"); String sName; Scanner in = new Scanner(System.in); sName = in.next(); name = sName; int d; d = in.nextInt(); date =d; } public static void main(String[] args) { // TODO Auto-generated method stub Pen p1 = new Pen("Hero", 1999, 20); p1.show(); } } class Pen extends Tool { private int iWeight; public Pen(String s, int d, int w) { super(s,d); iWeight = w; } public void show() { System.out.println("pen's name:"+name); System.out.println("pen's birthday:"+date); System.out.println("Pen's weight"+iWeight); } } 5.编写一个程序,它含有一个圆类、圆柱类和主类。 要求: 1)圆类:3个属性(圆心坐标x,y; 半径r); 构造方法(给3个属性赋值); 计算周长的方法(double zc()); 计算面积的方法(double mj())。 2)圆柱类:继承圆类,并加入一个属性h(高); 构造方法(给4个属性赋值); 计算面积的方法(double mj()); 计算体积的方法(double tj())。 注意,要充分利用父类的方法来实现功能。 3)主类:在主方法中创建圆和圆柱类的对象,然后 计算并输出它们的面积及圆柱的体积。 public class Circle { public double circleX; public double circleY; public double circleR; public Circle(double x, double y, double r) { circleX = x; circleY = y; circleR = r; } public double cz() { return 2*3.14*circleR; } public double mj() { return 3.14*circleR*circleR; } public static void main(String[] args) { Circle c1 = new Circle(30,30,10); Cylinder cy1 = new Cylinder(50,50,10,30); System.out.println("Circle.Area: "+c1.mj()); System.out.println("Cylinder.Area: "+cy1.mj()); System.out.println("Cylinder.Cube:"+cy1.tj()); } }
class Cylinder extends Circle { public double height; public Cylinder(double x, double y, double r, double h) { super(x,y,r); height = h; } public double mj() { return cz()*height + 3.14*circleR*circleR; } public double tj() { return 3.14*circleR*circleR*height; }} 6. 编写一个含有5个类的程序. import java.io.*; import java.util.Scanner; public class Person { public String ID; public String name; public char gender; public Person(String num, String na, char sex) { ID = num; name = na; gender = sex; } public void setInfo() { Scanner in = new Scanner(System.in); ID=in.next(); name=in.next(); }
public String getID() { return ID; }
public String getName() { return name; }
public static void main(String[] args) { Classes cs06 = new Classes("jike06"); cs06.creatStudentList(); cs06.displayStudentList(); } } // 教师类的定义方法; class Teacher extends Person { public String college; public Teacher(String num,String na, char sex, String co) { super(num,na,sex); college = co; } public void setInfo() { System.out.println("input the college department: "); Scanner in = new Scanner(System.in); String changeDepart = ""; changeDepart = in.next(); } public String getCollege() { return college; } }
class Student extends Person { public int cls; public Student(String id,String name, char sex, int num) { super(id,name,sex); cls = num; } public void setInfo() { Scanner in = new Scanner(System.in); cls = in.nextInt(); } public int getCls() { return cls; } }
class Classes { public String className; public Student[] stu = new Student[5]; public Classes(String name) { className = name; } public void creatStudentList() { //Student[] stu = new Student[5]; //编写代码中,需要注意的是,如果不把上一行注释掉的话,就容易出现打印不出来 //的问题,经过分析之后,发现,原来是,这样定义之后就是局部变量了。 stu[0] = new Student("08103449","Kingkong",'M',6); stu[1] = new Student("08103448","Frank",'F',8); stu[2] = new Student("08103447","Jack",'M',3); stu[3] = new Student("08103446","Jim",'F',4); stu[4] = new Student("08103445","HanMeiMei",'F',4);
} public void displayStudentList() { try{ for(int i = 0;i < 5; i++) { System.out.println("students' name:"+stu[i].name); } }catch(Exception e) {} } } 7. 编写一个含有三个包的程序 由于代码比较多,所以,就提交代码工程上去了。老师可以自行添加到Eclipse中,进行运行及代码的查看。
8. 编写一个接口及实现和使用的程序。 代码及截图: interface Runner { public void run(); } interface Swimmer { public void swim(); } abstract class Animal { abstract public void eat(); }
class Person extends Animal implements Runner,Swimmer { //Person是能跑和游泳的动物,所以继承了Animal,同时实现了Runner和Swimmer两个接口 public void run() { System.out.println("I am a man, I can run!"); } public void swim() { System.out.println("I am a man, I can swim!"); } public void eat() { System.out.println("I am a man, I can eat!"); } }
public class InterfaceComplie { public static void main(String args[]) { InterfaceComplie t=new InterfaceComplie(); Person p=new Person(); t.m1(p); t.m2(p); t.m3(p); } public void m1(Runner f) { f.run(); } public void m2(Swimmer s) { s.swim(); } public void m3(Animal a) { a.eat(); } } 9. 编写一个接口多次实现和使用的程序。 代码及截图: interface canWalk{ void walk();} interface canSwim { void swim(); } interface canFly { void fly(); } abstract class animal { abstract void eat(); } public class InterfaceComplie extends animal implements canWalk,canSwim,canFly { public void walk() { System.out.println("Swan walking!"); } public void swim() { System.out.println("Swan swimming!");} public void fly() { System.out.println("Swan flying!"); } void eat() { System.out.println("Swan eating!"); } public static void main(String[] args) { InterfaceComplie InterfaceComplie=new InterfaceComplie(); InterfaceComplie.walk(); InterfaceComplie.swim(); InterfaceComplie.fly(); InterfaceComplie.eat(); } } 实验总结: 通过本次实验,对于java语言的核心东西有了一个相当深刻的理解,尤其是对于这样多的题目编写之后,发现很多的问题,然后通过自己和老师精心讲解下,把问题一一解决掉了。感谢老师的认真解答,让我在本次的实验中,收获了很多的东西。 |
Java-2
最新推荐文章于 2023-06-08 09:52:46 发布