1完成动物的年龄排序。(40分)
题目内容:
通常来说动物的物理年龄与其生理年龄是不匹配的,如果要严格的根据动物的生理年龄排序需要有一个具体的参照(例如人)。下面列出了狗和人以及猫和人的年龄对照表。
狗 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
人 | 18 | 23 | 28 | 32 | 36 | 40 | 45 | 50 | 55 | 60 |
猫 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
人 | 15 | 24 | 28 | 32 | 36 | 40 | 44 | 48 | 52 | 56 |
例如,1岁的狗与1岁的猫相比,1岁的狗生理年龄较大。请利用继承机制与Comparable接口实现不同狗与猎豹对象的排序。下面给出了程序的基本框架,请给出相关的函数实现。
class Animal {
int age;//动物年龄
int mage; //映射到人的年龄
String name; //名字
static int[] dog = {0,18,23,28,32,36,40,45,50,55,60};
static int[] cat= {0,15,24,28,32,36,40,44,48,52,56};
}
class Dog extends Animal implements Comparable{
//实现你的构造函数与Comparable中的接口
}
class Cat extends Animal implements Comparable{
//实现你的构造函数与Comparable中的接口
}
import java.util.Arrays;
import java.util.Scanner;
public class CompareAnimal {
public static void main(String[] args) {
Animal[] as = new Animal[4];
// 初始化
Scanner sc = new Scanner(System.in);
// 利用hasNextXXX()判断是否还有下一输入项
if (sc.hasNext()) {
as[0] = new Dog("dog1", sc.nextInt());
}
if (sc.hasNext()) {
as[1] = new Cat("cat1", sc.nextInt());
}
if (sc.hasNext()) {
as[2] = new Dog("dog2", sc.nextInt());
}
if (sc.hasNext()) {
as[3] = new Cat("cat2", sc.nextInt());
}
// 请补充排序
// 请补充升序输出结果
}
}
输入格式:
输入4个数字(1-10之间)
输出格式:
动物生理年龄升序排序
输入样例:
4
2
8
7
输出样例:
cat1,2
dog1,4
cat2,7
dog2,8
时间限制:500ms内存限制:32000kb
答案:
import java.util.Scanner;
import java.util.Arrays;
class Animal {
int age;
int mage;
String name;
static int[] dog = {0,18,23,28,32,36,40,45,50,55,60};
static int[] cat= {0,15,24,28,32,36,40,44,48,52,56};
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getMage() {
return mage;
}
public void setMage(int mage) {
this.mage = mage;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static int[] getDog() {
return dog;
}
public static void setDog(int[] dog) {
Animal.dog = dog;
}
public static int[] getCat() {
return cat;
}
public static void setCat(int[] cat) {
Animal.cat = cat;
}
}
class Dog extends Animal implements Comparable<Animal>{
public Dog(String string, int nextInt) {
this.setName(string);
mage = dog[nextInt];
this.setMage(mage);
this.setAge(nextInt);
}
@Override
public int compareTo(Animal another) {
return mage-another.mage;
}
}
class Cat extends Animal implements Comparable<Animal>{
public Cat(String string, int nextInt) {
this.setName(string);
mage = cat[nextInt];
this.setMage(mage);
this.setAge(nextInt);
}
@Override
public int compareTo(Animal another) {
return mage-another.mage;
}
}
public class Main {
public static void main(String[] args) {
Animal[] as = new Animal[4];
Scanner sc = new Scanner(System.in);
if (sc.hasNext()) {
as[0] = new Dog("dog1", sc.nextInt());
}
if (sc.hasNext()) {
as[1] = new Cat("cat1", sc.nextInt());
}
if (sc.hasNext()) {
as[2] = new Dog("dog2", sc.nextInt());
}
if (sc.hasNext()) {
as[3] = new Cat("cat2", sc.nextInt());
}
Arrays.sort(as);
for (Animal animal : as) {
System.out.println(animal.name+","+animal.age);
}
}
}
题目来源于网络,如有侵权,请联系本人删除