Java练习

Posted 可能自洽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java练习相关的知识,希望对你有一定的参考价值。

Java练习

一、类与对象

1.Vehicle类的成员变量有:speed(速度)、power(功率)。成员方法有:speedUp(int s)—加速,speedDown(int d)—减速,setPower(int p)—设置功率,getPower()—获取功率

public class vehicle 

    double speed;   //机动车的速度
    int power;    //机动车的功率

    //加速功能
    void speedUp(int s) 
        speed = speed + s;
    

    //减速功能
    void speedDown(int d) 
        speed = speed - d;
    

    //设置机动车的功率
    void setPower(int p) 
        power = p;
    

    //获取机动车的功率
    int getPower() 
        return power;
    

    double getSpeed() 
        return speed;
    

public class user 

    public static void main(String[] args) 
        vehicle car1, car2;
        car1 = new vehicle();
        car2 = new vehicle();
        car1.setPower(128);
        car2.setPower(76);
        System.out.println("car1的功率是:" + car1.getPower());
        System.out.println("car2的功率是:" + car2.getPower());
        car1.speedUp(80);
        car2.speedUp(80);
        System.out.println("car1目前的速度是:" + car1.getSpeed());
        System.out.println("car2目前的速度是:" + car2.getSpeed());
        car1.speedDown(10);
        car2.speedDown(20);
        System.out.println("car1目前的速度是:" + car1.getSpeed());
        System.out.println("car2目前的速度是:" + car2.getSpeed());
    


2.根据下面要求,编写一个Java应用程序

①定义类StuCard,用到类成员变量(人数)和实例成员变量:学号、姓名、性别、专业、年级、籍贯等;
②初始化的时候用到构造方法,提供两个以上构造方法;
③多个类(业务类StuCard和测试主类),用到包的概念,且分别放到不同的包中;
④用到类成员访问权限,要求类成员变量为Public,实例成员变量为Private;
⑤编写所有数据成员的访问器和修改器(共有的get和set方法);
⑥在主类中实现对业务类StuCard的读、写、修改属性等功能。
在完成以上功能要求的情况下,可以进一步扩展。

public class StuCard 

    // 用到类成员访问权限,要求类成员变量为Public,实例成员变量为Private
    // 类成员变量:人数
    public static Integer stuNum;
    // 实例成员变量:学号、姓名、性别、专业、年级、籍贯
    private String id, name, sex, major, grade, hometown;

    // 编写所有数据成员的访问器和修改器(共有的get和set方法)
    public static Integer getStuNum() 
        return stuNum;
    

    public static void setStuNum(Integer stuNum) 
        StuCard.stuNum = stuNum;
    

    public String getId() 
        return id;
    

    public void setId(String id) 
        this.id = id;
    

    public String getName() 
        return name;
    

    public void setName(String name) 
        this.name = name;
    

    public String getSex() 
        return sex;
    

    public void setSex(String sex) 
        this.sex = sex;
    

    public String getMajor() 
        return major;
    

    public void setMajor(String major) 
        this.major = major;
    

    public String getGrade() 
        return grade;
    

    public void setGrade(String grade) 
        this.grade = grade;
    

    public String getHometown() 
        return hometown;
    

    public void setHometown(String hometown) 
        this.hometown = hometown;
    


    // 初始化的时候用到构造方法,提供两个以上构造方法
    StuCard() 
        stuNum = 20;
    

    StuCard(String id, String name, String sex) 
        this.id = id;
        this.name = name;
        this.sex = sex;
    

    StuCard(String id) 
        this.id = id;
    

public class test 
    public static void main(String[] args) 
        StuCard stuCard = new StuCard();
        System.out.print(stuCard.getName());
        System.out.print("\\n");
        StuCard stuCard1 = new StuCard("001", "wa", "男");
        System.out.print(stuCard1.getName());
    

3.用类描述计算机中CPU的速度和硬盘的容量。要求Java应用程序有4个类,名字分别是PC、CPU、HardDisk和Test,其中Test是主类。

PC类与CPU和HardDisk类关联的UML图如下:

其中,CPU类要求getSpeed()返回speed的值,要求setSpeed(int m)方法将参数m的值赋值给speed。HardDisk类要求getAmount()返回amount的值,要求setAmount(int m)方法将参数m的值赋值给amount。PC类要求setCPU(CPU c)将参数c的值赋值给cpu,要求setHardDisk(HardDisk h)方法将参数h的值赋值给HD,要求show()方法能显示cpu的速度和硬盘的容量。
主类Test的要求:
3.1 main方法中创建一个CPU对象cpu,cpu将自己的speed设置为2200
3.2 main方法中创建一个HardDisk对象disk,disk将自己的amount设置为200
3.3 main方法中创建一个PC对象pc
3.4 pc调用setCPU(CPU c)方法,调用时实参是cpu
3.5 pc调用setHardDisk(HardDisk h)方法,调用时实参是disk
3.6 pc调用show()方法。

public class PC 
    CPU cpu;
    HardDisk HD;

    public void setCPU(CPU c) 
        cpu = c;
    

    public void setHardDisk(HardDisk h) 
        HD = h;
    

    public void show() 
        System.out.print("cpu的速度:" + cpu.getSpeed() + "\\n硬盘的容量:" + HD.getAmount());
    

public class HardDisk 
    int amount;  //定义硬盘的容量

    void setAmount(int m) 
        amount = m;
    

    int getAmount() 
        return amount;
    


public class CPU 
    int speed; //定义CPU的速度

    void setSpeed(int m) 
        speed = m;
    

    public int getSpeed() 
        return speed;
    

public class Test 
    public static void main(String[] args) 
        // main方法中创建一个CPU对象cpu,cpu将自己的speed设置为2200
        CPU cpu = new CPU();
        cpu.speed = 2200;
        // main方法中创建一个HardDisk对象disk,disk将自己的amount设置为200
        HardDisk disk = new HardDisk();
        disk.amount = 200;
        // main方法中创建一个PC对象pc
        PC pc = new PC();
        // pc调用setCPU(CPU c)方法,调用时实参是cpu
        pc.setCPU(cpu);
        // pc调用setHardDisk(HardDisk h)方法,调用时实参是disk
        pc.setHardDisk(disk);
        // pc调用show()方法
        pc.show();
    

4.共饮同井水:编写程序模拟两个村庄公用同一口井水。编写一个Village类,该类有一个静态的成员变量waterAmount,用于模拟井水的水量;实例变量peopleNumber表示村庄的人数,实例变量name表示村庄的名称。定义相应的成员方法操作成员变量。在主类Land的main()方法中创建两个村庄,设置村庄的名称、人数,通过一个村庄改变waterAmount的值,另一个村庄查看该值的结果。

提示:类变量是该类所有对象的共享数据;一般通过类方法操作类变量

public class test 
    public static void main(String[] args) 
        // 在主类Land的main()方法中创建两个村庄
        Village v1 = new Village();
        Village v2 = new Village();
        // 设置村庄的名称、人数
        v1.setName("1");
        v1.setPeopleNumber(10);
        v2.setName("2");
        v2.setPeopleNumber(20);
        // 通过一个村庄改变 waterAmount 的值,另一个村庄查看该值的结果
        v1.setWaterAmount(400);
        System.out.print(v2.getWaterAmount());
    


// 编写一个Village类
class Village 
    // 该类有一个静态的成员变量 waterAmount,用于模拟井水的水量
    static int waterAmount = 1000;
    // 实例变量 peopleNumber 表示村庄的人数
    int peopleNumber;
    // 实例变量 name 表示村庄的名称
    String name;

    // 定义相应的成员方法操作成员变量
    // 实例方法既能对类变量操作,也能对实例变量操作;而类方法只能对类变量进行操作。
    public static int getWaterAmount() 
        return waterAmount;
    

    public static void setWaterAmount(int waterAmount) 
        Village.waterAmount = waterAmount;
    

    public int getPeopleNumber() 
        return peopleNumber;
    

    public void setPeopleNumber(int peopleNumber) 
        this.peopleNumber = peopleNumber;
    

    public String getName() 
        return name;
    

    public void setName(String name) 
        this.name = name;
    

5.正n边形:在一个正n边形中,所有边的长度都相同,且所有角的度数都相同(即这个多边形是等边等角的)。设计一个名为RegularPolygon的类,该类包括

①一个名为n的int型私有数据成员表示多边形的边数;
②一个名为side的double型私有数据成员表示多边形的长度;
③一个名为x的double型私有数据成员表示多边形中点的x坐标;
④一个名为y的double型私有数据成员表示多边形中点的y坐标;
⑤一个创建带默认值(n的默认值为3,side的默认值为1,x的默认值为0,y的默认值为0)的正多边形的无参构造方法;
⑥一个能创建带指定边数和边长度,中心在(0,0)的正多边形的构造方法;
⑦一个能创建带指定边数和边长度,中心在(x,y)的正多边形的构造方法;
⑧所有数据成员的访问器和修改器(共有的get和set方法);
⑨一个返回多边形周长的方法getPerimeter();
⑩一个返回多边形面积的方法getArea(),计算正多边形面积的公式是:
S = (n * side *side)/(4 * tan(π/n))
编写一个测试程序,分别使用无参构造方法、RegularPolygon(6, 4)和RegularPolygon(10, 4, 5.6, 7.8)创建三个RegularPolygon对象,输出每个对象的周长和面积。

public class test 
    public static void main(String[] args) 
        RegularPolygon regularPolygon1 = new RegularPolygon();
        RegularPolygon regularPolygon2 = new RegularPolygon(6, 4);
        RegularPolygon regularPolygon3 = new RegularPolygon(10, 4, 5.6, 7.8);
        System.out.print("regularPolygon1's perimeter is " + regularPolygon1.getPerimeter() + " regularPolygon1's area is " + regularPolygon1.getArea());
        System.out.print("\\n");
        System.out.print("regularPolygon2's perimeter is " + regularPolygon2.getPerimeter() + " regularPolygon2's area is " + regularPolygon2.getArea());
        System.out.print("\\n");
        System.out.print("regularPolygon3's perimeter is " + regularPolygon3.getPerimeter() + " regularPolygon3's area is " + regularPolygon3.getArea());
    


class RegularPolygon 
    private int n;
    private double side;
    private double x;
    private double y;

    RegularPolygon() 
        n = 3;
        side = 1;
        x = 0;
        y = 0;
    

    RegularPolygon(int newN, double newSide) 
        this.n = newN;
        this.side = newSide;
        this.x = 0;
        this.y = 0;
    

    RegularPolygon(int newN, double newSide, double newX, double newY) 
        this.n = newN;
        this.side = newSide;
        this.x = newX;
        this.y = newY;
    

    public int getN() 
        return n;
    

    public void setN(int newN) 
        n = newN;
    

    public double getSide() 
        return side;
    

    public void setSide(double newSide) 
        side = newSide;
    

    public double getX() 
        return x;
    

    public void setX(double newX) 
        x = newX;
    

    public double getY() 
        return y;
    

    public void setY(double newY) 
        y = newY;
    

    public double getPerimeter() 
        return n * side;
    

    public double getArea() 
        return n * side * side / (4 * Math.tan(Math.PI / n));
    

二、继承性和多态

1.根据下面的要求,编写Java应用程序实现

编写程序模拟中国人、美国人是人;北京人是中国人。除主类外,程序中还有4个类:
People、ChinaPeople、AmericanPeople和BeijingPeople类。
要求如下:
People类有权限是protected的double型成员变量height和weight,以及public void speakHello()、public void averageHeight()和public void averageWeight()方法。
ChinaPeople类是People的子类,新增了public void chinaGongfu()方法。要求ChinaPeople重写父类的public void speakHello()、public void averageHeight()和public void averageWeight()方法。
AmericanPeople类是People的子类,新增public void americanBoxing()方法。要求AmericanPeople重写父类的public void speakHello()、public void averageHeight()和public void averageWeight()方法。
BeijingPeople类是ChinaPeople的子类,新增public void beijingOpera()方法。要求ChinaPeople重写父类的public void speakHello()、public void averageHeight()和public void averageWeight()方法。
People、ChinaPeople、AmericanPeople和BeijingPeople类的UML图如下图所示:

在主类中定义各类的对象并调用其方法输出相应信息

public class test1 
    public static void main(String[] args) 
        People people = new People();
        ChinaPeople chinaPeople = new ChinaPeople();
        AmericanPeople americanPeople = new AmericanPeople();
        BeijingPeople beijingPeople = new BeijingPeople();

        people.speakHello();
        System.out.print("\\n");
        people.averageHeight();
        people.averageWeight();
        System.out.print("\\n");
        chinaPeople.speakHello();
        System.out.print("\\n");
        chinaPeople.averageHeight();
        chinaPeople.averageWeight();
        chinaPeople.chinaGongfu();
        System.out.print("\\n");
        americanPeople.speakHello();
        System.out.print("\\n");
        americanPeople.averageHeight();
        americanPeople.averageWeight();
        americanPeople.americanBoxing();
        System.out.print("\\n");
        beijingPeople.speakHello();
        System.out.print("\\n");
        beijingPeople.averageHeight();
        beijingPeople.averageWeight();
        beijingPeople以上是关于Java练习的主要内容,如果未能解决你的问题,请参考以下文章

Java练习题Java程序的输出 | 第七套(含解析)

Java练习题Java程序的输出 | 第七套(含解析)

Java练习题Java程序的输出 | 第六套(含解析)

Java练习题Java程序的输出 | 第六套(含解析)

Java练习题Java程序的输出 | 第五套(含解析)

Java练习题Java程序的输出 | 第五套(含解析)