-1

私はこのような2つのループを持っています

goodexpressions と badexpressions は文字列配列です

for(int i =0; i < goodexpressions.length; i++) {}

&

for(int j =0; j < badexpressions.length; j++) {}

これらの両方を 1 つのループで宣言しようとしています。これまでのところ、これは正しくありません。

for(int b = 0 , c = 0; b < goodexpressions.length; b++ c < badexpressions.length; c++)

この発言を正すにはどうすればいいですか?

4

3 に答える 3

2

あなたがやろうとしていることは悪い考えのように思えますが、ここに動作するコードがあります。ただし、それが完全に明確ではないため、あなたが望んでいることを正確に行うかどうかはわかりません。

for(int b = 0, c = 0; b < goodexpressions.length || c < badexpressions.length; b++, c++) { }

ただし、これを行う場合でも、が配列インデックス範囲内にあるかどうかbを確認する必要があります。cを置き換えることもできますが||&&その場合はもうそれを行う必要はありませんが、配列の長さが等しくない場合、いくつかの項目が失われます。

于 2013-07-14T15:51:19.827 に答える
1

これはあなたが求めていることを行うと思います:

for (int b = 0, c = 0; 
     b < goodexpressions.length && c < badexpressions.length; 
     b++, c++)

for古いスタイルのループには、正確に 2 つのセミコロン区切りがあることに注意してください。

そして、あなたのコメントに基づいて、これはより良いかもしれないと思います:

for (int i = 0; i < Math.min(goodexpressions.length, badexpressions.length); i++)

ノート:

  1. ループ本体が何をしようとしているのかはまったく明確ではありません。これにより、ループを結合する正しい方法が決まります...または、それらを結合することがまったく悪い考えであるかどうか。

  2. 上記のコードは、2 つの長さのうち小さい方で停止するように設計されています。大きい方で止めたい場合は、 と に変更し&&てください。ただし、これを行う場合は、配列境界の例外を避けるように注意する必要もあります。||minmax

  3. goodexpression[i]両方を同時に使用することが意図されていない限りbadexpression[i](例: 比較、結合など)、2 つの別々のループを使用すると、コードがより読みやすく効率的になります。

  4. もう 1 つの可能性は、2 つの配列の長さが同じであることを単純に確認することです。

于 2013-07-14T15:54:57.130 に答える