为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

萧十郎 2022-06-15 10:50:25
练习是有一个名为 Tenant 的类,用于存储公寓租户的值。在主类 Prog2 中,我试图创建一个 ArrayList,它可以保存 4 个不同的值,所有这些值都与租户类有关,它们是 - 租户的姓名、公寓号码、初始首付款和每月付款。我希望能够将这些值打印在单独的行中,这将为每个租户提供所有 4 条信息 - 然后是一个空白行,然后如果有另一个租户,则为另一个租户提供相同的 4 条信息。我可以让程序正确提示问题,但我得到的只是空值和 0 打印出来(见下面的评论)。我感谢所有的帮助——我在这方面不是最擅长的。// this class is the tenant class that passes all the tenant's informationpublic 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();}
查看完整描述

2 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

问题在于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使用起来可能很棘手,但这是一个可以清除问题的示例。


查看完整回答
反对 回复 2022-06-15
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

您的代码有很多问题。

  1. 的构造函数

    公共租户(字符串名称,字符串 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()));


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信