2016-10-15 7 views
1

という名前の-6との間のすべての奇数がforのループを使用して格納されているという名前のoddsを作成しようとしています。forループを使って配列内に奇数を格納する

int[] odds = new int[22]; 

for (int i = -6, m = 0; i <= 38 && m < 22; i++, m++) { 
    if (i % 2 != 0) { 
     odds[m] = i; 
    } 
} 

しかし、動作していません。どんな助けもありがとうございます。ありがとう。

答えて

1

現在、配列内のオッズのインデックスを追跡する変数mは、奇数の実際の値で移動することができます。これを解決するには、オッズをチェックforループの外m配列インデックスカウンターを移動:

int[] odds = new int[22]; 
int m = 0; 

for (int i = -6; i <= 38; i++) { 
    if (i % 2 != 0) { 
     odds[m] = i; 
     ++m; 
    } 
} 
2

あなたはmにループを実行するたびにインクリメントします。したがって、i = -6の場合はインデックス0に保存されますが、i = -4の場合はインデックス2に保存されます。インデックスをスキップしています。あなたは新しい奇数 を保存する場合にのみ、そうメートルを削除メートルを増やす必要があります

int[] odds = new int[22]; 
for (int i = -5, m = 0; i <= 38; i = i + 2, m++) { 
    odds[m] = i; 
} 
+0

ありがとうございました! – CyberMaestro

+0

@Cyber​​Maestro喜んでお手伝いします!これが役に立ちましたらupvoteとaccept =] – nhouser9

0

++:より良い方法は、我々は他のすべての数が奇数である知っている、そしてわずか2で毎回ループをインクリメントするという事実を使用しますあなたのforステートメントであなたの割り当てオッズを変更する[m ++] = i;

0

最善の解決策は、ティムとnhouserが提案され、両方のものを使用することです:

int[] odds = new int[22]; 
int m = 0; 
for (int i = -5; i < 38; i += 2) { 
    odds[m++] = i; 
} 
+0

インデックスを更新するにはi + = 2が必要です。 –

+0

@KristianH良いキャッチ! –

0

あなたはすべての繰り返しでmが増加しています。

int[] odds = new int[22]; 
int oddCount = 0; 
for (int i = -6; i <= 38;i++) { 
    if (i % 2 != 0) { 
     odds[oddCount] = i; 
     oddCount++; 
    } 
} 
関連する問題