【问题标题】:Why do I get "The left-hand side of an assignment must be a variable"?为什么我会得到“赋值的左侧必须是变量”?
【发布时间】: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)”。我该如何解决这个问题?

标签: java arraylist


【解决方案1】:

Java 有 2 种“桶”来存储信息。一种是变量,另一种是常量。这两个品种都可以让您在桶中查看内容。变量还允许您替换存储桶的当前内容。

您的语法,a.setBidList() 是一个方法调用,它是常量。您可以从中读取,但不能为其分配新值。由于您将它放在赋值语句的左侧,因此您要求 Java 做一些它不能做的事情。

【讨论】:

    猜你喜欢
    • 2012-06-29
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多