【发布时间】:2019-07-31 16:17:55
【问题描述】:
我正在制作一个“狗登记册”,您可以在其中保存有关狗的信息并为拍卖的狗出价等。 我是一个初学者,最近被告知数组列表应该是私有的,这个信息给我带来了一些麻烦。
我有一个名为Auction 的类,您可以在其中存储出价,我在该类中创建了一个 get 方法以在主类中使用。它适用于每一行,除了我的方法中可以删除用户的一行。
private void deleteUser()
{
System.out.println("Enter the name of the user: ");
String name = input.nextLine().toLowerCase().trim();
User deleteUser = getUser(name);
while (name.isEmpty()) {
System.out.println("Error. Enter the name of the user: ");
name = input.nextLine().toLowerCase().trim();
deleteUser = getUser(name);
}
if (deleteUser == null) {
userException();
return;
}
for (Auction a : auctionRegister) {
ArrayList<Bid> bids = new ArrayList<>();
for (Bid b : a.getBidList()) {
if (b.getUser() != deleteUser) {
bids.add(b);
}
}
a.getBidList() = bids;
}
if (deleteUser.getDogList() != null) {
for (Dog dog : deleteUser.getDogList()) {
dogRegister.remove(dog);
}
}
userRegister.remove(deleteUser);
System.out.println("User " + deleteUser.getUserName() + " is removed");
}
我在这一行收到错误消息(“赋值的左侧必须是变量”):
a.getBidList() = bids;
当我公开数组列表时一切正常,所以我的问题是,我该如何解决这个问题?
【问题讨论】:
-
您只能将 (
=) 分配给变量。a.getBidList()不是变量。你可能想要一个二传手。a.setBidList(bids) -
Java 没有引用语义,所以
getBidList返回一个 value 您将其更改为其他值,但随后您将更改后的值扔掉,那是什么观点? (当然,正如编译器告诉你的那样,它是不合法的。但如果是,它不会做任何事情。如果sqrt(5)=3;是合法的,它不会将五的平方根更改为三。它会计算五的平方根,将其替换为三,然后将三丢弃。) -
谢谢。 @Michael我创建了一个设置器,如下所示: public ArrayList
setBidList(Bid bid){ return this.bidRegister= setBidList(bid);但这导致了另一个问题,而不是之前的错误消息,我在主类中得到“Auction 类型中的方法 setBidList(Bid) 不适用于参数 (ArrayList )”。我该如何解决这个问题?