【问题标题】:“The left-hand side of an assignment must be a variable” with int and boolean“赋值的左侧必须是变量”,带 int 和 boolean
【发布时间】:2012-11-01 12:10:26
【问题描述】:

我必须为此写条件:

last_page = ((nl.getLength() == 0) -= 1);

在这一行中出现以下错误:

作业的左侧必须是 变量

这是我的代码:

    int current_page = 25;
boolean last_page;
int prev_page;
int next_page;
NodeList nl = doc.getElementsByTagName(KEY_SONG);
prev_page = (current_page -= 1);
next_page = (current_page += 1);

【问题讨论】:

    标签: java if-statement boolean int


    【解决方案1】:

    ((nl.getLength() == 0) 部分的计算结果为 布尔值,您不能从中减去 1

    【讨论】:

    • 那我怎样才能找到 last_page 值
    • 你不希望它像其他人建议的那样是 nl.getLength()-1 吗?
    • 哦,我明白了——last_page 是一个标志!然后就做last_page = current_page == (nl.getLength()-1);
    • 我使用 xml 解析开发了一个 android listview 示例。这里我必须隐藏 lastpage 上的按钮。我使用这种条件意味着隐藏空白页面上的按钮 .if(nl.getLength() = = 0)...但希望隐藏 last_page 上的按钮。所以我怎样才能隐藏 last_page 上的按钮。请给我解决方案
    • hm - 似乎您已将您的完整问题更改为不同的内容。最好创建一个新问题而不是更改当前问题(因为所有已经给出的答案都与您的新问题不匹配)
    【解决方案2】:

    == 符号是比较运算符。基本上,您正在检查 nl.getLength() 是否为 0。这将为您提供一个布尔值(TrueFalse)。

    -= 符号表示“递减”。所以someVar -= 1 会尝试从someVar 的值中减去1

    您不能从布尔值中减去数字,因为它们是不同的类型。这就是您收到错误的原因。

    因为您将last_page 声明为布尔值并且您提到了一个 if 语句,所以我假设您想检查您是否在最后一页。这样做的代码是这样的:

    last_page = (current_page == (nl.getLength() - 1)); //is the current page the last page?
    

    请记住,在 Java 中,索引从 0 开始,一直到 length - 1。该语句会检查当前页面是否为nl的最终索引

    【讨论】:

    • last_page 被声明为 boolean
    • 我使用 xml 解析开发了一个 android listview 示例。这里我必须隐藏 lastpage 上的按钮。我使用这种条件意味着隐藏空白页面上的按钮 .if(nl.getLength() = = 0)...但希望隐藏 last_page 上的按钮。所以我怎样才能隐藏 last_page 上的按钮。请给我解决方案
    • @user1780331 我不确定你的意思。如果您想检查最后一页,我(和其他几个人)编写的代码将起作用。如果您已经知道如何隐藏按钮if (nl.getLength() == 0),那么对于if (last_page) 也是完全一样的。如果您不知道如何隐藏此按钮,那么我建议您提出一个新问题来寻求帮助。
    【解决方案3】:

    只需使用它来代替:

    last_page = nl.getLength() -1;
    

    你得到的错误是因为这个(nl.getLength() == 0),因为它会返回一个布尔值truefalse,因此你不能减去(以及任何其他算术运算,如加法、乘法等)布尔值中的任何数字这样没有意义:(true - 1)(false +1)

    【讨论】:

    • int last_page;也改变上面的行意味着如果循环出现以下错误:if (last_page) { btnLoadMore.setVisibility(View.GONE); pDialog.dismiss();类型不匹配:无法从 int 转换为 boolean
    • 你应该在循环中写if(last_page > any_number)
    • 我使用 xml 解析开发了一个 android listview 示例。这里我必须隐藏 lastpage 上的按钮。我使用这种条件意味着隐藏空白页面上的按钮 .if(nl.getLength() = = 0)...但希望隐藏 last_page 上的按钮。所以我怎样才能隐藏 last_page 上的按钮。请给我解决方案
    【解决方案4】:

    看,(nl.getLength() == 0) 不是变量,它是一个表达式,就像1 + 1。运算符-= 然而不是一个表达式,它想减少一个变量,即取变量的值,修改它并写回。你怎么能“写回”到一个表达式中?

    合适的 CS 术语是 lvalue:一个不仅可以读取,还可以写入的值。像(nl.getLength() == 0) 这样的表达式不是左值,但是像-= 这样的运算符期望左值能够修改它。这就是错误消息的基本含义。

    相反,在您的第二个示例中,current_page 是一个左值。

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多