java必做实验二

(1). 2020年东京奥运会共设13种球类运动,包括足球、篮球、排球、乒乓球、羽毛球、网球、橄榄球、水球、棒球、垒球、高尔夫球、曲棍球和手球,这13种球都可以称之为“球”。请通过分析,抽象它们所共有的性质,定义一个抽象类Ball。在报告中附上程序截图、运行结果截图(要求以中国队获得奖牌数量最多的三个球类运动项目为例)和详细的文字说明。

 class Ball{//构造父类——球类
        String ChineseName;
        String name;
        int medal;
        Ball(){
            name="ball";
            ChineseName="球";
            medal=0;
        }
        void show(){
            System.out.println("项目"+name+ChineseName+"总共获得"+medal+"枚金牌");
        }
}
 public class first {
        public static void main(String args[]){
            Ball ball=new Ball();
            System.out.println("测试父类:");
            ball.show();
            System.out.println("2020东京奥运会中国获得金牌数最多的三种球类如下:");
            ball=new PingpongBall("乒乓球",5);
            ball.show();
            ball=new Badminton("羽毛球",1);
            ball.show();
            ball=new Basketball("篮球",1);
            ball.show();
        }
}
class Football extends Ball{//构造足球类
        Football(String s,int num){
            name="football";medal=num;ChineseName=s;
        }
}
 class Basketball extends Ball{//构造篮球类
     Basketball(String s,int num){
         name="Basketball";medal=num;ChineseName=s;
     }
 }
 class Volleyball extends Ball{//构造排球类
     Volleyball(String s,int num){
         name="Volleyball";medal=num;ChineseName=s;
     }
 }
 class PingpongBall extends Ball{//构造乒乓球类
     PingpongBall(String s,int num){
         name="PingpongBall";medal=num;ChineseName=s;
     }
 }
 class Badminton extends Ball{//构造羽毛球类
     Badminton(String s,int num){
         name="Badminton";medal=num;ChineseName=s;
     }
 }
 class Tennis extends Ball{//构造网球类
     Tennis(String s,int num){
         name="Tennis";medal=num;ChineseName=s;
     }
 }
 class Rugby extends Ball{//构造橄榄球类
     Rugby(String s,int num){
         name="Rugby";medal=num;ChineseName=s;
     }
 }
 class Water_polo extends Ball{//构造水球类
     Water_polo(String s,int num){
         name="Water_polo";medal=num;ChineseName=s;
     }
 }
 class Baseball extends Ball{//构造棒球类
     Baseball(String s,int num){
         name="Baseball";medal=num;ChineseName=s;
     }
}
class Softball extends Ball{//构造垒球类
    Softball(String s,int num){
        name="Softball";medal=num;ChineseName=s;
    }
}
class golf extends Ball{//构造高尔夫球类
    golf(String s,int num){
        name="golf";medal=num;ChineseName=s;
    }
}
class Hockey extends Ball{//构造曲棍球类
    Hockey(String s,int num){
        name="Hockey";medal=num;ChineseName=s;
    }
}
class Handball extends Ball{//构造手球类
    Handball(String s,int num){
        name="Handball";medal=num;ChineseName=s;
    }
}

(2).编写一个Athlete类。该类包含三个成员变量name、sport和medal,分别代表一个运动员的姓名、最擅长的运动项目名称和在2020年东京奥运会获得的奖牌数量。在该类中重写Object类的toString方法,当调用它重写的toString方法时,输出这个运动员的姓名、运动项目和奖牌数量。在报告中附上程序截图、运行结果截图(要求以2020年东京奥运会中国队第一块金牌获得者为例)和详细的文字说明。

class Athlete{//构造类
    String name;
    int medal;
    String sport;
    Athlete(){//无参构造
        name=null;
        medal=0;
        sport=null;
    }
    Athlete(String name,int medal,String sport){//带参构造
        this.name=name;
        this.medal=medal;
        this.sport=sport;
    }
    public String toString(){//重写toString方法
        String string;
        string=(name+"是中国在东京奥运会第一位金牌得者\n"+"获奖项目是"+sport+"\n奖牌数量是"+medal);
        return string;
    }
}
public class second {
    public static void main(String args[]){
        Athlete athlete=new Athlete("杨倩",2,"射箭");
        System.out.println(athlete);//利用athlete的toString方法作为println的参数
    }
}

(3).编写一个队列类Queue,用来存储short型数据,队列中的数据是先进先出的。具体要求如下:成员变量short [] elements用来存储short型数据;成员变量int size用来表示存储的short型数据的个数;构造方法Queue在初始化队列的时候,设置队列的容量为16;方法enqueue(short v)用来往队列中添加一个short型数据;方法dequeue()用从队列中删除并返回一个short型数据;方法getSize()用来返回队列的大小。在报告中附上程序截图、运行结果截图和详细的文字说明。

class Queue{//类Queue的构造
    static int maxsize=16;//设置队列最大长度,初始化为16
    short []elements;
    int size;
    Queue(){//无参构造函数的定义;
        elements=new short [maxsize];//初始化数组长度为maxsize
        size=0;
    }
    Queue(short []elements,int size){//有参构造
        this.size=size;
        this.elements=new short[maxsize];
        for(int i=0;i<size;i++) this.elements[i]=elements[i];
    }
    void enqueue(short v){//enqueue成员方法的定义
        if(size+1>maxsize){//判断队列是否已满,若已满,扩容并输出相应信息
            maxsize*=2;//队列成倍扩容
            System.out.println("当前队列已满,扩容队列容量至"+maxsize);
            short []array=new short[size];
            for(int i=0;i<size;i++) array[i]=elements[i];//数组array记录原数组elements的数据
            elements=new short[maxsize];//重新为数组开辟maxsize的空间
            for(int i=0;i<size;i++) elements[i]=array[i];
        }
        System.out.println("元素"+v+"入队啦!");
        elements[size]=v;//将v插入elements末端(插入下标为size)
        size+=1;//数组长度加一
    }
    short dequeue(){//删除队列元素的方法的定义
        System.out.println("有人出队啦!");
        short element=elements[0];//element记录被删数据,并且作为返回值
        for(int i=0;i<size-1;i++){
            elements[i]=elements[i+1];//数组元素前移
        }
        size-=1;//队列长度减一
        return element;//返回被删数据
    }
    short getSize(){//放回队列大小的方法的构造
        return (short)size;//size记录了当前队列的大小,因为题目要求size为int型,所以来一手类型转换
    }
    void show(){
        System.out.println("当前队列长度为"+size+",队列各元素分别为:");
        for(int i=0;i<size;i++) System.out.print(elements[i]+" ");
        System.out.println();
    }
}
public class third {
    static int maxsize=16;
    public static void main(String args[]){
        short []elements=new short[maxsize];
        for(short i=0;i<(short)maxsize;i++) elements[i]=i;//创建一个short数组为queue初始化
        Queue queue=new Queue(elements,maxsize);
        System.out.println("getSize方法的测试,此时size大小为"+queue.getSize()+"\n随后是初始化后的队列的输出:");
        queue.show();
        System.out.println("出队的是:"+ queue.dequeue());
        queue.show();
        queue.enqueue((short)16);
        queue.show();
        queue.enqueue((short)17);
        queue.show();
    }
}

(4).编写一个复数类Complex:成员变量包括realPart和imagePart,分别代表实数部分和虚数部分;构造方法Complex()用于将实数部分和虚数部分都置为0;构造方法Complex(int r, int i)用于将实数部分置为r、虚数部分置为i;方法Complex complexADD(Complex c)将当前复数对象与形参复数对象相加;方法Complex complexSUB(Complex c)将当前复数对象与形参复数对象相减;String toString()把当前复数对象的实数部分和虚数部分组合成a+bi的字符串形式。在报告中附上程序截图、运行结果截图(要求输出复数3+5i和复数2+3i相加与相减的结果)和详细的文字说明。

class Complex{
    int realPart;
    int imagePart;
    Complex(){//默认构造使实部虚部都为0
        realPart=0;
        imagePart=0;
    }
    Complex(int real,int image){//有参构造
        realPart=real;
        imagePart=image;
    }
    Complex complexADD(Complex c){
        Complex a=new Complex();
        a.realPart=realPart+c.realPart;
        a.imagePart=imagePart+c.realPart;
        return a;
    }
    Complex complexSUB(Complex c){
        Complex a=new Complex();
        a.realPart=realPart-c.realPart;
        a.imagePart=imagePart-c.imagePart;
        return a;
    }
    public String toString(){
        String string;
        if(realPart!=0){
            string=realPart+"";
        }
        else string="";
        if(imagePart==0){
            if(realPart==0)string="0";
            else string+="";
        }
        else if(imagePart>0) {
            if(imagePart!=1)
            string+="+"+imagePart+"i";
            else {
                if(realPart!=0)string+="+i";
                else string+="i";
            }
        }
        else if(imagePart<0){
            if(imagePart!=-1) string+=imagePart+"i";
            else string+="-i";
        }
        return string;
    }
}
public class fourth {
    public static void main(String args[]){
        Complex a=new Complex(3,5);
        System.out.print("复数a:");
        System.out.println(a);
        Complex b=new Complex(2,3);
        System.out.print("复数b:");
        System.out.println(b);
        Complex c;
        c=a.complexADD(b);
        System.out.print("复数a+b:");
        System.out.println(c);
        c=a.complexSUB(b);
        System.out.print("复数a-b:");
        System.out.println(c);
    }
}

(5).编写一个旅行推荐指数类TravelIndex,成员变量和方法自定。编写一个新冠疫情现状类COVID19Status,成员变量和方法自定。自行查阅累计确诊、死亡和现有确诊等数据,计算中国、日本、新加坡、美国、英国、俄罗斯的旅行推荐指数(需要说明计算的合理性)。在报告中附上程序截图、运行结果截图(要求按旅行推荐指数大小输出以上六个国家的名称和相应的数值)和详细的文字说明。

import java.lang.module.Configuration;

class COVID19Status{
    private String name;
    private long Confirmed;//确诊人数
    private long population;//总人数
    private long died;//累计死亡数
    private long Current_diagnosis;//现有确诊数
    COVID19Status(){}
    COVID19Status(String name,long Confirmed,long population,long died,long Current_diagnosis){
        this.name=name;
        this.Confirmed=Confirmed;
        this.Current_diagnosis=Current_diagnosis;
        this.died=died;
        this.population=population;
    }
    public String getName(){return name;}
    public long getConfirmed(){return Confirmed;}
    public long getPopulation(){return population;}
    public long getDied(){return died;}
    public long getCurrent_diagnosis(){return Current_diagnosis;}
}
class TravelIndex{
        COVID19Status covid19status;
        double index;
        TravelIndex(){
            index=0;
            covid19status=null;
        }
      TravelIndex(COVID19Status covid19Status){this.covid19status=covid19Status;
        double RateOfCurrent_diagnosis= covid19status.getCurrent_diagnosis()*1e8/covid19status.getPopulation();//累计确诊率
        double RateOfDied=covid19status.getDied()*1e8/covid19status.getConfirmed();//累计死亡率
        double RateOfConfirmed=covid19status.getCurrent_diagnosis()*1e8/covid19status.getPopulation();//现有确诊率
          index=(RateOfConfirmed*0.2+RateOfDied*0.5+RateOfCurrent_diagnosis*0.3);
        }
}
public class fifth {
    public static void main(String args[]){
            TravelIndex []country=new TravelIndex[6];
            country[0]=new TravelIndex(new COVID19Status("中国",7729043,1395000000,27172,7354281));
            country[1]=new TravelIndex(new COVID19Status("日本",21692795,127000000,45756,1204531));
            country[2]=new TravelIndex(new COVID19Status("美国",98779943,327000000,1089916,1692428));
            country[3]=new TravelIndex(new COVID19Status("俄罗斯",21278816,244000000,388709,330833));
            country[4]=new TravelIndex(new COVID19Status("英国",23798793,66489000,191681,199353));
            country[5]=new TravelIndex(new COVID19Status("新加坡",1040000,5638700,1214,20939));
            for(int i=0;i<6;i++){
                double min=country[i].index;
                for(int j=i;j<6;j++)
                    if(min>country[j].index){
                        double t=min;
                        min=country[j].index;
                        country[j].index=t;
                    }
            }
            System.out.println("====旅游推荐指数====");
            for(int i=0;i<6;i++)
                System.out.println("NO"+i+"\t"+country[i].covid19status.getName()+"\t"+country[i].index);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值