-4

我必须为此写下条件:

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);
4

4 回答 4

4

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

于 2012-11-01T12:12:56.750 回答
2

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

这个-=符号的意思是“递减”。因此someVar -= 1将尝试1从 的值中减去someVar

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

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

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

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

于 2012-11-01T12:13:52.657 回答
1

只需使用它来代替:

last_page = nl.getLength() -1;

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

于 2012-11-01T12:12:48.007 回答
0

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

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

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

于 2012-11-01T12:17:10.233 回答