Java OJ 作业2

版权声明:本文为博主原创文章,转载请注明出处,谢谢。 https://blog.csdn.net/qingchenldl/article/details/84576339

116 - Person类

Description

构造Person类。包括姓名(name),性别(sex)和年龄(age)。提供所有属性的set和get函数,提供print函数打印其信息

Input

姓名(name),性别(sex)和年龄(age)

Output

用户信息

Sample Input

Lucy male 23

Sample Output

name:Lucy; sex:male; age:23

HINT


pre append code

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
         Scanner scan = new Scanner(System.in);      
         String name = scan.next();      
         String sex = scan.next();      
         int age = scan.nextInt();
         Person p = new Person();
         p.setName(name);
         p.setSex(sex);
         p.setAge(age);
         p.print();
         scan.close(); 
    }
}

MyAnswer

class Person {
    private String name;
    private String sex;
    private int age;
    
    public void setAge(int age) {
        this.age = age;
    }

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

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

    public void print() {
        System.out.println("name:" + name + "; sex:" + sex + "; age:" + age);
    }
}

117 - Person类2

Description

在Person类的基础上,添加一个带参数的构造函数,参数分别为姓名,性别,年龄,提供print函数打印其信息

Input

姓名(name),性别(sex)和年龄(age)

Output

用户信息

Sample Input

Lucy male 23

Sample Output

name:Lucy; sex:male; age:23

HINT


Pre Append Code

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
         Scanner scan = new Scanner(System.in);      
         String name = scan.next();      
         String sex = scan.next();      
         int age = scan.nextInt();
         Person p = new Person(name,sex,age);
         p.print();
         scan.close(); 
    }
}

MyAnswer

class Person {
    private String name;
    private String sex;
    private int age;

    Person(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

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

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

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

    public void print() {
        System.out.println("name:" + name + "; sex:" + sex + "; age:" + age);
    }
}

118 - 学生类

Description

有一个学生类的结构如下:
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函数完成如下功能:
从键盘中读入三个学生的信息,比较他们的成绩,按照成绩由高到低排列输出

Input

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

Output

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

Sample Input

1 wang 89
2 liu 78
3 ma 90

Sample Output

3 ma 90
1 wang 89
2 liu 78

HINT


Post Append Code

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);
    }
}

MyAnswer

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Student[] s = new Student[3];
        Scanner scan = new Scanner(System.in);
        int i;
        for(i=0; i<3; i++){
            int no = scan.nextInt();
            String name = scan.next();
            int score = scan.nextInt();
            s[i] = new Student(no, name, score);
        }
        sort(s);
        for(i=0; i<3; i++){
            s[i].print();
        }
    }

    public static void sort(Student[] s){
        int i,j;
        Student tmp;
        for(i=0; i<2; i++){
            for(j=1; j<3; j++){
                if(s[i].getScore() < s[j].getScore()){
                    tmp = s[i];
                    s[i] = s[j];
                    s[j] = tmp;
                }
            }
        }
    }
}

119 - MyDate类

Description

构造日期类MyDate类,包含年月日,提供相应的get和set函数,提供void print()函数打印日期,提供int compare(MyDate d)测试当前对象和参数对象d的早晚,如果早则返回-1,晚则返回1,相等则返回0
在main函数中,读入两个日期对象,输出第一个日期对象的信息,输出两个对象的比较结果

Input

两个日期对象,第一个为当前日期对象的年月日,第二个为待比较日期对象的年月日

Output

当前日期对象的信息,当前对象和待比较日期对象的比较结果

Sample Input

2008 6 12 2009 6 22

Sample Output

6/12/2008 -1

HINT


MyAnswer

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        int y1 = scan.nextInt();
        int m1 = scan.nextInt();
        int d1 = scan.nextInt();
        MyDate date1 = new MyDate(y1,m1,d1);
        int y2 = scan.nextInt();
        int m2 = scan.nextInt();
        int d2 = scan.nextInt();
        MyDate date2 = new MyDate(y2,m2,d2);
        date1.print();
        System.out.println(" "+date1.compare(date2));
    }

}
class MyDate {
    private int day;
    private int month;
    private int year;
    MyDate(int year, int month, int day){
        setYear(year);
        setMonth(month);
        setDay(day);
    }

    public int getDay() {
        return day;
    }

    public int getMonth() {
        return month;
    }

    public int getYear() {
        return year;
    }

    public void setDay(int day) {
        this.day = day;
    }

    public void setMonth(int month) {
        this.month = month;
    }

    public void setYear(int year) {
        this.year = year;
    }
    public void print(){
        System.out.print(getMonth()+"/"+getDay()+"/"+getYear());
    }
    public int compare(MyDate d){
        if(this.getYear()>d.getYear()){
            return 1;
        }
        else if(this.getYear()<d.getYear()){
            return -1;
        }
        else{
            if(this.getMonth()>d.getMonth()){
                return 1;
            }
            else if(this.getMonth()<d.getMonth()){
                return -1;
            }
            else{
                if (this.getDay() <= d.getDay()) {
                    if(this.getDay()<d.getDay()){
                        return -1;
                    }
                    else{
                        return 0;
                    }
                } else {
                    return 1;
                }
            }
        }
    }
}

120 - Person类3

Description

在Person类的基础上,添加一个静态变量avgAge表示所有Person对象的平均年龄(整数),提供方法getAvgAge能够读取该静态变量。
main函数中,构造三个Person类的对象,读入他们的信息,并输出他们的平均年龄

Input

多个用户信息

Output

平均年龄

Sample Input

a male 23
b female 21
c male 22

Sample Output

22

HINT

在构造函数里对静态变量avgAge进行更新

MyAnswer

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int i=0;
        Person[] p = new Person[3];
        Scanner scan = new Scanner(System.in);
        for(i=0;i<3;i++){
            String name = scan.next();
            String sex = scan.next();
            int age = scan.nextInt();
            p[i] = new Person(name, sex, age);
        }
        scan.close();
        System.out.println(p[2].getAvgAge());

    }
}

class Person {
    private String name;
    private String sex;
    private int age;
    public static int avgAge = 0;
    Person(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
        avgAge += age;
    }

    public static int getAvgAge(){
        return avgAge/3;
    }
}

123 - 长方形长方体类

Description

定义一个长方形类Rectangle,拥有长、宽属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
定义一个子类长方体类,拥有长、宽、高属性,提供构造函数,getPerimeter函数计算所有边的周长,getArea函数计算表面积,新增getVolume函数,计算体积
在main函数中,分别构造长方形类和长方体类的对象,并输出他们的周长、面积、体积,保留两位小数

Input

长方形类的长、宽
长方体类的长、宽、高

Output

长方形的周长和面积
长方体的周长,表面积,体积

Sample Input

1 2
1 2 3

Sample Output

6.00 2.00
24.00 22.00 6.00

HINT


Pre Append Code

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
         Scanner scan = new Scanner(System.in);      
   
         double length = scan.nextDouble();
         double wide = scan.nextDouble();
         Rectangle r = new Rectangle(length,wide);
         System.out.printf("%.2f",r.getPerimeter());
         System.out.printf("%.2f",r.getArea());

         length = scan.nextDouble();
         wide = scan.nextDouble();
         double height = scan.nextDouble();
         Cuboid  c = new Cuboid (length, wide, height);
         System.out.printf("%.2f",c.getPerimeter());
         System.out.printf("%.2f",c.getArea());
         System.out.printf("%.2f",c.getVolume());

         scan.close(); 
    }
}

MyAnswer

class Rectangle {
    double length;
    double width;
    Rectangle(double length, double width){
        this.length = length;
        this.width = width;
    }

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

class Cuboid extends Rectangle {
    double height;
    Cuboid(double l, double w, double h) {
        super(l,w);
        this.height = h;
    }

    public double getPerimeter(){
        return 4*(length+width+height);
    }
    public double getArea(){
        return 2*(super.getArea()+length*height+width*height);
    }
    public double getVolume(){
        return super.getArea()*height;
    }
}

125 - 学生、大学生、研究生类

Description

定义Student学生类,拥有学号、姓名、性别属性,提供构造函数,以及相应属性的get set函数,提供函数attendClass(String className)表示上课。
定义CollegeStudent大学生类继承自Student类,拥有新增属性专业,提供构造函数,提供新增属性的get和set函数
定义GraduateStudent研究生类继承自CollegeStudent类,拥有新增属性导师,提供构造函数,提供新增属性的get和set函数,提供函数doResearch() 表示做研究(打印xx is doing research)。

main函数中对构造的类进行测试

Input

学生类信息,学号、姓名、性别
大学生类信息,学号、姓名、性别、专业
研究生类信息,学号、姓名、性别、专业、导师

Output

学生类信息
大学生类信息
研究生类信息

Sample Input

1 liu female
2 chen female cs
3 li male sc wang

Sample Output

no: 1
name: liu
sex: female
no: 2
name: chen
sex: female
major: cs
no: 3
name: li
sex: male
major: sc
supervisor: wang
li is doing research

HINT


Pre Append Code

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
         Scanner scan = new Scanner(System.in);      
         int no = scan.nextInt();
         String name = scan.next();      
         String sex = scan.next();      
         Student s = new Student(no, name, sex);
         s.print();

         no = scan.nextInt();
         name = scan.next();      
         sex = scan.next();      
         String major = scan.next();
         CollegeStudent c = new CollegeStudent(no, name, sex, major);
         c.print();

         no = scan.nextInt();
         name = scan.next();      
         sex = scan.next();      
         major = scan.next();
         String supervisor = scan.next();
         GraduateStudent g = new GraduateStudent(no, name, sex, major, supervisor );
         g.print();
         g.doResearch();
         scan.close(); 
    }
}

MyAnswer


class Student {
    int no;
    String name;
    String sex;
    Student(int no, String name, String sex){
        this.name = name;
        this.no = no;
        this.sex = sex;
    }

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

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

    public void setNo(int no) {
        this.no = no;
    }

    public int getNo() {
        return no;
    }

    public String getName() {
        return name;
    }

    public String getSex() {
        return sex;
    }
    public void print(){
        System.out.println("no: "+getNo());
        System.out.println("name: "+getName());
        System.out.println("sex: "+getSex());
    }
}

class CollegeStudent extends Student {
    String major;
    CollegeStudent(int no, String name, String sex, String major){
        super(no,name,sex);
        this.major = major;
    }

    public String getMajor() {
        return major;
    }

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

    public void print(){
        super.print();
        System.out.println("major: "+major);
    }
}


class GraduateStudent extends CollegeStudent {
    String supervisor;
    GraduateStudent(int no, String name, String sex, String major, String supervisor){
        super(no, name, sex, major);
        this.supervisor = supervisor;
    }

    public String getSupervisor() {
        return supervisor;
    }

    public void setSupervisor(String supervisor) {
        this.supervisor = supervisor;
    }

    public void print(){
        super.print();
        System.out.println("supervisor: "+supervisor);
    }

    public void doResearch(){
        System.out.println(getName()+" is doing research");
    }
}

129 - Shape类

Description

定义一个形状类Shape,提供计算周长getPerimeter()和面积getArea()的函数
定义一个子类正方形类Square继承自Shape类,拥有边长属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
定义一个子类长方形类Rectangle继承自Square类,拥有长、宽属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
定义一个子类圆形类Circle继承自Shape,拥有半径属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()

在main函数中,分别构造三个子类的对象,并输出他们的周长、面积.

Input

正方形类的边长
长方形类的长宽
圆类的半径

Output

正方形的周长、面积
长方形的周长、面积
圆形的周长、面积

Sample Input

1
1 2
2

Sample Output

4.00 1.00
6.00 2.00
12.57 12.57

HINT

用System.out.printf("%.2f",d)进行格式化输出

Pre Append Code

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
         Scanner scan = new Scanner(System.in);      
         double length = scan.nextDouble();
         Square s = new Square(length);
         System.out.printf("%.2f ",s.getPerimeter());
         System.out.printf("%.2f\n",s.getArea());

         length = scan.nextDouble();
         double wide = scan.nextDouble();
         Rectangle r = new Rectangle(length,wide);
         System.out.printf("%.2f ",r.getPerimeter());
         System.out.printf("%.2f\n",r.getArea());

         double radius = scan.nextDouble();
         Circle c = new Circle(radius);
         System.out.printf("%.2f ",c.getPerimeter());
         System.out.printf("%.2f\n",c.getArea());

         scan.close(); 
    }
}

MyAnswer

abstract class Shape{
    public abstract double getPerimeter();
    public abstract double getArea();
}

class Square extends Shape {
    double length;
    Square(double length){
        this.length = length;
    }
    @Override
    public double getPerimeter(){
        return 4*length;
    }

    @Override
    public double getArea() {
        return length*length;
    }
}

class Rectangle extends Square{
    double width;
    Rectangle(double length,double width){
        super(length);
        this.width = width;
    }

    @Override
    public double getArea() {
        return length*width;
    }

    @Override
    public double getPerimeter() {
        return 2*(length+width);
    }
}

class Circle extends Shape {
    double r;
    Circle(double rr){
        this.r = rr;
    }

    @Override
    public double getPerimeter() {
        return 2*Math.PI*r;
    }

    @Override
    public double getArea() {
        return Math.PI*r*r;
    }
}

猜你喜欢

转载自blog.csdn.net/qingchenldl/article/details/84576339