-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)に評価され、それから減算することはできません。1

于 2012-11-01T12:12:56.750 に答える
2

二重==記号は比較演算子です。基本的に、あなたはそれが であることを確認していnl.getLength()ます0。これにより、ブール値 (TrueまたはFalse) が得られます。

-=記号は「減少」を意味します。の値から減算someVar -= 1しようとします。1someVar

ブール値は型が異なるため、ブール値から数値を減算することはできません。これがエラーが発生する理由です。

ブール値として宣言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です。これは、読み取りだけでなく書き込みもできる値です。like の式(nl.getLength() == 0)は左辺値ではありませんが、演算子 like-=は左辺値がそれを変更できることを期待しています。それがエラーメッセージが基本的に言っていることです。

それどころか、2 番目の例current_pageでは左辺値です。

于 2012-11-01T12:17:10.233 に答える