Java-2

实验题目终极报告(支持原创)

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,同时实现了RunnerSwimmer两个接口

    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语言的核心东西有了一个相当深刻的理解,尤其是对于这样多的题目编写之后,发现很多的问题,然后通过自己和老师精心讲解下,把问题一一解决掉了。感谢老师的认真解答,让我在本次的实验中,收获了很多的东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值