如何在java中的类中创建带有对象的Arraylist

练习是有一个名为 Tenant 的类,用于存储公寓租户的值。在主类 Prog2 中,我试图创建一个 ArrayList,它可以保存 4 个不同的值,所有这些值都与租户类有关,它们是 - 租户的姓名、公寓号码、初始首付款和每月付款。我希望能够将这些值打印在单独的行中,这将为每个租户提供所有 4 条信息 - 然后是一个空白行,然后如果有另一个租户,则为另一个租户提供相同的 4 条信息。我可以让程序正确提示问题,但我得到的只是空值和 0 打印出来(见下面的评论)。我感谢所有的帮助——我在这方面不是最擅长的。


// this class is the tenant class that passes all the tenant's 

information


public class Tenant { 

    private String firstName;

    private String lastName;

    private String aptNumber;

    private double yearlyRent;

    private String fullName;

    private double firstPayment;

    private double monthlyPayment;


public Tenant(String name, String aptNum, double fPayment, double 

                                                    mPayment){

    name = fullName;

    aptNum = aptNumber;

    fPayment = firstPayment;

    mPayment= monthlyPayment;

}

public Tenant() {


}



public void setFirstName(String name) {

    firstName = name;

}

public void setLastName(String lName) {

    lastName= lName;

}

public void setAptNumber(String apt) {

    aptNumber = apt;

}

public void setRent(double rent) {

    yearlyRent = rent; 

}

public String getFirstName() {

    return firstName;

}

public String getLastName() {

    return lastName;

}

public String getAptNumber() {

    return aptNumber;

}

public double getRent() {

    return yearlyRent;

}

public double getFirstPayment() {

    double monthlyRent = yearlyRent/12;

    firstPayment = monthlyRent * 3;

    return firstPayment;

}

public double getmonthlyPayment() {

    double firstAndLast = yearlyRent/12;

    monthlyPayment = (yearlyRent - firstAndLast)/11;

    return monthlyPayment;

}

public String getFullName(){

    fullName = firstName + " " + lastName;

    return fullName;

}


}




// The below class contains the main method 






public class Prog2 {

    public static double getDouble(Scanner scan) {

        System.out.println("Enter yearly rent:");

        while (!scan.hasNextDouble()) {

           scan.next();

           System.out.println("Error: please enter a numeric 

           value");

        }

        return scan.nextDouble();

}


萧十郎
浏览 153回答 2
2回答

慕码人8056858

问题在于Tenant类中的第一个构造函数。请记住,=运算符将右操作数的值分配给左操作数中的变量。在您的情况下,代码应如下所示:public Tenant(        String name,         String aptNum,         double fPayment,         double mPayment){    fullName = name;    aptNumber = aptNum;    firstPayment = fPayment;    monthlyPayment = mPayment;}我通常对构造函数做的是在字段之后命名参数,然后在字段分配的左侧this用于引用字段而不是参数。这最终看起来更清晰:public Tenant(        String fullName,         String aptNumber,         double firstPayment,         double monthlyPayment){    this.fullName = fullname;    this.aptNumber = aptNumber;    this.firstPayment = firstPayment;    this.monthlyPayment = monthlyPayment;}this使用起来可能很棘手,但这是一个可以清除问题的示例。

慕运维8079593

您的代码有很多问题。的构造函数公共租户(字符串名称,字符串 aptNum,双 fPayment,双 mPayment){ name = fullName; aptNum = aptNumber; fPayment = firstPayment; mPayment=每月付款;}在这里,您不仅将空值分配给您的函数参数,而不是从函数参数为您的类字段分配值。此外,当您调用函数 getFullName() 时,它将返回 null,因为 firstName 和 lastName 字段未初始化。因此,您需要将构造函数修改为 -public Tenant(String firstNamename, String lastName, String aptNum, double fPayment, double                                                    mPayment){    this.firstName = firstNamename;    this.lastName = lastName;    this.aptNumber = aptNum;    this.firstPayment = fPayment;    this.monthlyPayment = mPayment;    this.fullName = getFullName();}同样在 for 循环中,您需要更改list.add(new Tenant(tnt.getFullName(), tnt.getAptNumber(),         tnt.getFirstPayment(), tnt.getmonthlyPayment())); 至 -list.add(new Tenant(tnt.getFirstName(),tnt.getLastName(), tnt.getAptNumber(),        tnt.getFirstPayment(), tnt.getmonthlyPayment()));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java