我正在处理包含多个变量的ArrayList
个对象。例如:
// pseudo code
class Ticket {
int gameID
double price
int seatnumber
}
我有ArrayList
个多个Ticket
个对象,需要访问它们。我看过javadoc,到目前为止我已经提出了
list.get(index).attribute
但是我收到编译错误说:
无法找到符号
我在做错了语法吗? 这是我的代码:
public static void printGameMoney(ArrayList games, ArrayList tickets)
{
double total = 0;
double tickMoney = 0;
for (int i=0; i<tickets.size(); i++)
{
double tickMoney = tickets.get(i).priceOfTick;
total = total + tickMoney;
}
}
答案 0 :(得分:3)
你的代码是“old-school”,你应该使用typed-types,interfaces和new-style for循环:
public static void printGameMoney(final List<Game> games, final List<Ticket> tickets)
{
double total = 0;
for (final Ticket ticket : tickets)
{
final double tickMoney = ticket.getPriceOfTick();
total = total + tickMoney;
}
}
另请注意,此方法很奇怪,因为它不会返回任何内容。
答案 1 :(得分:2)
如果属性确实是您的班级成员之一,那么请使用如下。
((Ticket) list.get(index)).attribute;
答案 2 :(得分:1)
请改用:
public static void printGameMoney(ArrayList games, ArrayList<Ticket> tickets)
{
double total = 0;
double tickMoney = 0;
for (int i=0; i<tickets.size(); i++)
{
double tickMoney = tickets.get(i).priceOfTick;
total = total + tickMoney;
}
}
基本上,更改会导致ArrayList<Ticket>
而非简单ArrayList
。通过这种方式,您可以告诉编译器ArrayList
中的对象属于Ticket
类型,因此它们具有您指定的属性(例如priceOfTick
)。
同样适用于games
,因此,如果您有Game
课程,则应使用ArrayList<Game> games
。
答案 3 :(得分:1)
首先在每个字段声明后添加分号:
class Ticket {
int gameID;
double price;
int seatnumber;
}
另外,请显示您使用的确切代码,而不是list.get(index).attribute
。
答案 4 :(得分:1)
List<Object> list = new ArrayList<Object>();
((Ticket)list.get(x)).attribute;
答案 5 :(得分:0)
您必须这样访问,list.get(i).price;
而不是list.price.get(i);
for (int i=0; i<tickets.size(); i++)
{
double tickMoney = list.get(i).price;
total = total + tickMoney;
}
问题在于你减速ArrayList
如果你声明像ArrayList<Ticket>
那样你在获得时不需要施放。{p>其他明智的你需要在那里演员。更多用于每个循环。