Java编程:尝试按年龄排序

时间:2015-08-26 22:06:58

标签: java

我写了一个小程序,展示了三位教授和印刷品,其中一位是最老的,也是最年轻的。我认为我的if语句是正确的,但它为两个语句打印出相同的名称。

public class app {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String initName = "Megan";
        String lastName = "Smith";
        String Degree = "Economics";
        int age = 40;
        professor2 pr1 = new professor2 (initName,lastName, Degree, age);

        professor2 pr2 = new professor2 ("John","White","Statistics", 55);

        professor2 pr3 = new professor2 ("Jill","Black","History", 60);


        //Check Oldest
        if ((pr1.getAge() > pr2.getAge()) && (pr1.getAge() > pr3.getAge())){
        System.out.println(pr1.getName() + " is older");}

        if ((pr2.getAge() > pr1.getAge()) && (pr2.getAge() > pr3.getAge())){
        System.out.println(pr1.getName() + " is older");}

        if ((pr3.getAge() > pr1.getAge()) && (pr3.getAge() > pr1.getAge())){
        System.out.println(pr1.getName() + " is older");}

        //Chech Youngest
        if ((pr1.getAge() < pr2.getAge()) && (pr1.getAge() < pr3.getAge())){
        System.out.println(pr1.getName() + " is younger");}

        if ((pr2.getAge() < pr1.getAge()) && (pr2.getAge() < pr3.getAge())){
        System.out.println(pr1.getName() + " is younger");}

        if ((pr3.getAge() < pr1.getAge()) && (pr3.getAge() < pr1.getAge())){
        System.out.println(pr1.getName() + " is younger");}

        }



    }

}

然后我的第二个文件是:

public class professor2 {
    String firstName;
    String lastName;
    String Degree;
    int age;

    professor2 (String myFirstName, String myLastName,String myDegree, int myAge)
    {
    firstName = myFirstName;
    lastName= myLastName;
    Degree = myDegree;
    age = myAge;
    }

    String getName()
    {
    return firstName + " " +lastName;
    }

    String getDegree()
    {
    return Degree;
    }

    int getAge()
    {
    return age;
    }
}

3 个答案:

答案 0 :(得分:0)

Dijam你怎么会想出最古老和最年轻的逻辑?我想一旦你把排序的年龄...然后用hashmap中的名字映射。当一个人要求最年轻或最老的去搜索排序列表时检索Hashmap中的名称?

答案 1 :(得分:0)

01。

您每次都打印pr1的名称!

System.out.println(pr1.getName() + " is older");

根据相应professor2语句的逻辑,更改每个if块中上一行中if类的对象。

<强> 02

第3次 if声明:

if ((pr3.getAge() > pr1.getAge()) && (pr3.getAge() > pr1.getAge())){
        System.out.println(pr1.getName() + " is older");}

您要将pr3pr1进行两次比较。但您需要将pr3pr1进行一次比较,将pr2进行一次比较。

<强> 03

第6个 if语句相同:

if ((pr3.getAge() < pr1.getAge()) && (pr3.getAge() < pr1.getAge())){
        System.out.println(pr1.getName() + " is younger");}

pr3pr1pr2进行比较。不是pr1两次。

答案 2 :(得分:0)

每次都打印相同的内容:

System.out.println(pr1.getName() + " is _____");}

在每个if声明中使用您要打印的教授。