如何设置始终是最后一个显示?

时间:2012-01-23 05:19:05

标签: java

我有一个“俱乐部”,并且会有俱乐部的成员。

我的第一堂课有这个:

private String first;
private String last;
private static int members = 0;

public tuna(String firstName, String lastName){
    first = firstN;
    last = lastN;
    members++;
    System.out.printf("%s %s\nMembers: %d", first, last, members);
   }
}

我有

class thing {
   public static void main(String[] args){

    tuna member1  = new tuna("Megan", "Fox");
    tuna member2 = new tuna("Mila", "Kunis");
    tuna member3 = new tuna("Melanie","Iglesias");
   }
}

当我运行它时,我明白了:

Megan Fox
Members: 1Mila Kunis
Members: 2Melanie Iglesias
Members: 3

但我希望“会员:3”成为唯一显示的“会员”文字,我希望它在程序的最后。所以我希望它显示为:

Megan Fox
Mila Kunis
Melanie Iglesias 

Members: 3

2 个答案:

答案 0 :(得分:1)

在您完成向班级添加成员后,调整tuna以使用getMemberCount()方法。

示例:

我们将printf语句更改为System.out.printf("%s %s\n", first, last);

我们在名为tuna的{​​{1}}中添加了一个访问者,该访问者返回getMemberCount()。这是一个选择,因为对象的数量 独立于对象的数据本身

static int

最后,您将public static int getMemberCount() { return members; } 称为:

getMemberCount()

您只需使用类名称(类似于System.out.println("Members:" + tuna.getMemberCount()); // Gets the member count. )调用静态方法,这意味着您不需要创建它的新实例。

答案 1 :(得分:0)

删除它:

System.out.printf("%s %s\nMembers: %d", first, last, members);

将这些方法添加到您的班级:

public int getMembers() { // accessor for members field
    return members;
}
protected void finalize() { // decrement member count when one is destroyed
    members--;
}

member3声明之后将其添加到您的main方法:

System.out.println("Members: " + member3.getMembers());