2016-03-03 59 views
0

我想创建一个方法来列出一个ArrayList中的元素,但该方法只返回最新的对象的值:对象的一个​​ArrayList列出参数

对象:

//Constructor for guests at the hotel 
public Guest (String name, String checkinDate, String checkoutDate, double depAmt) 
{ 
    gstName = name; 
    checkIn = checkinDate; 
    checkOut = checkoutDate; 
    deposit = depAmt; 
} 

ArrayList中当前对象:

//Fills the roster with three guests to start the program 
public static void fillGuest() 
{ 
    Guest guest1 = new Guest("Mike P.", "2/13/16", "2/23/16", 360.00); 
    guestList.add(guest1); 
    Guest guest2 = new Guest("Randall M.", "4/10/16", "4/17/16", 120.00); 
    guestList.add(guest2); 
    Guest guest3 = new Guest("Bo-Diddly.", "4/20/16", "4/23/16", 600.00); 
    guestList.add(guest3); 
} 

方法列出ArrayList中的对象:

public static void returnGuests() 
{ 
    System.out.println("Currently checked in " + guestList.size() + " guests:"); 
    for (int i = 0; i <= guestList.size() - 1; i++) 
    { 
     System.out.println(guestList.get(i)); 
    } 
} 

输出:

Currently checked in 3 guests: 
Bo-Diddly. 4/20/16 4/23/16 600.0 
Bo-Diddly. 4/20/16 4/23/16 600.0 
Bo-Diddly. 4/20/16 4/23/16 600.0 

Enter command: 

如何显示每个客户对象的单个对象的参数?

+10

你肯定还没有定义的字段,静态的?我们展示完整的客户代码源 –

+0

你看着使用'foreach'循环呢?这将代替你现有的for循环。 – Brian

+3

这是一个非常强烈的迹象表明你的'客人'类写错了。 –

回答

0

Guest对象应该如下。请注意,字段中缺少static修饰符。另请注意,使用this关键字。如果您使用的是带有static变量,那么你的IDE应该给你一个警告,它会被解释为MyClass.var,而不是this.var

您的问题是,当您创建新的Guest对象时,所有Guest对象将具有最后一组变量。您需要使用“实例”变量而不是“类”变量。

如果您想了解更多关于静态“类”变量的话题,请参阅Understanding Class Members

public class Guest { 

    String gstName, checkIn, checkOut; 
    double deposit; 

    public Guest (String name, String checkinDate, String checkoutDate, double depAmt) 
    { 
     this.gstName = name; 
     this.checkIn = checkinDate; 
     this.checkOut = checkoutDate; 
     this.deposit = depAmt; 
    } 
} 
相关问题