-4

タイトルはそれをほとんどカバーしています。何らかの理由で、この問題は私を逃れており、これに対する論理的な答えが見つかりません。

編集:

私が持っていると言う

int[] values = (2,5,3,2,1,4,6,3,2,1,5,3)

これらすべての要素を掛け合わせた積を取得したいと考えています。私の教科書では、強化された for ループでこれを行うよう求めています。

for (int element : values)
{
NO CLUE WHAT TO PUT HERE
}

しかし、私の最初の推測は、強化された for ループでは実行できないということでした。

私の教科書は、私をだまして何らかのレッスンを教えようとしているだけですか?

4

4 に答える 4

2

これは、強化された for ループでは実行できません。配列があるとします:( OPが質問を更新した後に回答を更新しました。更新は以下のとおりです)。

int[] a = {1,2,3};

あなたがするとき:

for(int num : a) {
  num = num*something;
} 

実際には別の変数を乗算しています(配列は影響を受けません)。

num上記の例では、配列要素のコピーのみです。したがって、実際には、配列自体ではなく、ローカル変数を変更しています。

これを読むと、配列の値がローカル変数にコピーされ、このローカル変数が使用されていることがわかります。したがって、この乗算は配列の元の値には影響しません。


OP更新

要素を乗算して結果を取得したい場合は . あなたの教科書はあなたをだまそうとしているわけではありません。値を変更するように求められません。しかし、いくつかの計算を行うためにそれらを使用するには:

int[] values = {2,5,3,2,1,4,6,3,2,1,5,3};
int result=1;
for(int value : values) {
    result *= value;
} 
System.out.println("The result: " + result); //Will print the result of 2*5*3*2*...
于 2013-03-17T21:21:45.730 に答える
1

これは、強化された for ループを使用して簡単に実行できます。

int result = 1;
for (int element : values)
{
    result *= element;
}
于 2013-03-18T02:20:17.140 に答える
0

それはできません。古いスタイルの配列アドレス指定を使用する必要があります。

for (int i = 0; i < array.length; i++) {
  array[i] = array[i] * 2;
}
于 2013-03-17T21:22:50.437 に答える