Java之考前每日一练(类实现)

今天复习的重点是Java类实现。

目录

1-1 Java类实现——小狗类

1-2 汽车类

1-3  学生类

1-4 是否偶数

1-5 定义游客类

1-6 设计一个矩形


1-1 Java类实现——小狗类

构造一个Puppy类,该类有一个age变量保存年龄,name变量存放名字,逻辑类型的变量male表示性别(true表示性别为male,否则为female),可以通过getter方法进行访问。该类具有setAge、getAge、getName和isMale方法。

请阅读和分析裁判测试程序样例和输入输出样例,完成Puppy类的代码。

裁判测试程序样例:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner myScan = new Scanner(System.in);
        String strName = myScan.next();
        String sex = myScan.next();
        Puppy myPuppy = new Puppy(strName, sex.equals("male"));
        // 通过方法来设定age
        myPuppy.setAge(myScan.nextShort());
        // 调用方法获取 age
        System.out.println("Puppy's age is : " + myPuppy.getAge());
        //调用方法获取 name
        System.out.println("Puppy's name is : " + myPuppy.getName());
        //调用方法获取性别
        System.out.println("Puppy's sex is : " + (myPuppy.isMale() ? "male" : "female"));
    }
}
/* 请在这里填写答案 */

代码如下:

class Puppy{
    int age;
    String name;
    boolean male;

    public Puppy(){
    }

    public Puppy(String name, boolean male) {
        this.name = name;
        if (male){
            this.male=true;
        }else {
            this.male=false;
        }
    }
    
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public boolean isMale(){
        return male;
    }
}

1-2 汽车类

编写汽车类,其功能有启动(start),停止(stop),加速(speedup)和减速(slowDown),启动和停止可以改变汽车的状态(on/off),初始时状态为off,速度为0,speedUp和slowDown可以调整汽车的速度,每调用一次汽车速度改变10(加速增10,减速减10),汽车启动后才能加减速,加速上限为160,减速下限为0,汽车速度减为0后才能停止,给出汽车类的定义。
Main函数中构造一个汽车对象,并对该对象进行操作,各个操作的编号为:

  1. start
  2. stop
  3. speedup
  4. slowdown
    操作完成后打印出汽车的状态和速度。

输入描述:

操作

输出描述:

汽车的状态和速度

裁判测试程序样例:

import java.util.Scanner;
public class Main{
    
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        Car c = new Car();
        for (int i=0;i<n;i++) {
            int a = s.nextInt();
            switch (a) {
            case 1: c.start(); break;
            case 2: c.stop(); break;
            case 3: c.speedUp(); break;
            case 4: c.slowDown(); break;
            }
        }
        System.out.print(c.status + " ");
        System.out.println(c.speed);
    }

}

/* 你的代码被嵌在这里 */

class Car{
    String status = "off";
    int speed = 0;
    public Car() {
    }
    public void start(){
        status = "on";
    }

    public void stop(){
        status = "off";
    }

    public void speedUp(){
        speed+=10;
    }

    public void slowDown(){
        speed-=10;
    }
}

1-3  学生类

有一个学生类的结构如下:

class Student {
    private int no;
    private String name;
        private int score;
    

    public Student(int _no, String _name, int _score) {
        no = _no;
        name = _name;
                score = _score;
    }
        public int getNo() {return no;}
        public String getName() {return name;}
        public int getScore() {return score;}
    
    public void print(){
        System.out.println(no + " "+name+" "+score);
    }
}

请构造main函数完成如下功能:
从键盘中读入三个学生的信息,比较他们的成绩,按照成绩由高到低排列输出

输入描述:

三个学生的学号、姓名、成绩

输出描述:

由高到低排列输出的三个学生信息

裁判测试程序样例:

/*你的代码被嵌在这里*/

class Student {
    private int no;
    private String name;
        private int score;
    
    public Student(int _no, String _name, int _score) {
        no = _no;
        name = _name;
                score = _score;
    }
        public int getNo() {return no;}
        public String getName() {return name;}
        public int getScore() {return score;}
    
    public void print(){
        System.out.println(no + " "+name+" "+score);
    }
}

代码如下:

public static void main(String[] args) {
        //建立一个结构数组,用来存储3个学生的信息
        Student[] stu = new Student[3];
        Scanner sc = new Scanner(System.in);

        //由于要排序,在比对时需要将学生放在一个相同的类型,也就是结构数组类型的中间变量中,故要new一个空的中间变量
        Student temp = new Student(0, null, 0);

        //输入3个学生的信息
        for (int i = 0; i < stu.length; i++) {
            stu[i] = new Student(sc.nextInt(), sc.next(),sc.nextInt());
        }

        //将3个学生按成绩进行排序
        for (int i = 0; i < stu.length; i++) {
            int max = stu[0].getScore();
            if(stu[i].getScore()>max){
                temp = stu[0];
                stu[0]=stu[i];
                stu[i]=stu[0];
            }
        }

        //输出3个学生的信息
        for (int i = 0; i < stu.length; i++) {
            stu[i].print();
        }
    }

1-4 是否偶数

本题要求实现一个函数,判断输入的整数是否是偶数,如果是偶数,返回true,否则返回false。

函数接口定义:

public static boolean isOdd(int data)

说明:其中 data 是用户传入的参数。 data 的值不超过int的范围。函数须返回 true 或者 false

裁判测试程序样例:

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int data=in.nextInt();
        System.out.println(isOdd(data));
    }
  
    /* 请在这里给出isOdd(i)函数 */
   
}

代码如下:

    public static boolean isOdd(int data){
        if(data%2==0){
            return true;
        }else{
            return false;
        }
    }

 1-5 定义游客类

定义游客类(其测试类已给出),要求如下:
一个景区根据游人的年龄收取不同价格的门票。请编写游客类,根据年龄段决定能够购买的门票价格并输出

  • 当输入的年龄小于18或者大于60(不包括18,60)时,程序输出:
  • 年龄为:XX,免费
  • 当输入的年龄在18与60之间时,程序输出
  • 年龄为:XX,价格为20元

裁判测试程序样例:

/* 请在这里填写答案 */

//使用该类创建使用对象的测试类如下:
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Tourist v = new Tourist();        
        v.age = input.nextInt();        
        v.show();
    }
}

代码如下:

    class Tourist{
        int age;

        public Tourist() {
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        public void show(){
            if(age<18 || age>60){
                System.out.println("年龄为:" + age + ",免费");
            }else {
                System.out.println("年龄为:" + age + ",价格为20元");
            }
        }

    }

 1-6 设计一个矩形类

设计一个名为Rectangle的类表示矩形。这个类包括:
两个名为width和height的double型数据域,它们分别表示矩形的宽和高。width和height的默认值都为1.
一个无参构造方法。
一个为width和height指定值的矩形构造方法。
一个名为getArea()的方法返回这个矩形的面积。
一个名为getPerimeter()的方法返回这个矩形的周长。

类名为:rectangle

裁判测试程序样例:

import java.util.Scanner;
/* 你的代码将被嵌入到这里 */

public class Main {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    double w = input.nextDouble();
    double h = input.nextDouble();
    Rectangle myRectangle = new Rectangle(w, h);
    System.out.println(myRectangle.getArea());
    System.out.println(myRectangle.getPerimeter());

    input.close();
  }
}

 代码如下:

class Rectangle{
    double width=1;
    double height=1;

    public Rectangle() {
    }

    public Rectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }

    public double getArea(){
        return width*height;
    }

    public double getPerimeter(){
         return 2*(width+height);
    }

}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值