実現したいこと
1~10までの配列をfor文で偶数、while文で奇数のみを条件指定し、偶数と奇数で下記のように振り分けて出力したいです。
偶数は2です
偶数は4です
偶数は6です
偶数は8です
偶数は10です
奇数は1です
奇数は3です
奇数は5です
奇数は7です
奇数は9です
発生している問題・分からないこと
・下記のプログラムを実行すると奇数のみ表示され、偶数の振り分けができずにいます。
※解決しました。
・for文の偶数の表示はされたが奇数を表示させるための「while()」のカッコ内の文言がわからない状態
試したこと
while (int i = 0; i < arr.length; i++) クラスがなくエラー、
while(i < arr.length) シンボルが見つからずエラー、
クラスはint[]arrがないから、シンボルはarr.lengthの宣言が必要と考えたが追加しても解決に至っていない状況です。
どなたかご教示お願い致します。
該当のソースコード
Java
1public class array{ 2 //配列から決められた条件のものだけを全て出力するプログラム 3 public static void main(String[] args){ 4 //1~10までの数字を入れた配列を作成 5 int[] arr = {1,2,3,4,5,6,7,8,9,10}; 6 7 //for文を使って配列の全要素から偶数のみを条件指定 8 for (int i = 0; i < arr.length; i++) { 9 if(arr[i]%2 == 0){ 10 11 System.out.println("配列内の偶数は" + arr[i] + "です"); 12 } 13 } 14 15 16 //while文を使って配列の全要素から奇数のみを条件指定 17 while(){ 18 if(arr[i]%2 == 1){ 19 System.out.println("配列内の奇数は" + arr[i] + "です"); 20 } 21 22 i++; 23 } 24 } 25} 26 27 28 29 30 31 32 33
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
for文、while文での偶数奇数を求めるソースコード
補足
特になし
> 数字の配列で「1~10」まで入れたものの出力結果では「9」までしか表示されません。
System.out.println("偶数は" + i + "です");
System.out.println("奇数は" + i + "です");
ここで i の値を表示しているためです。実際には i ではなく、arr[i] とするのでしょう。この他にも勘違いをしていると思われる部分がありますが、とりあえずは以上です。
> System.out.println("偶数は" + i + "です");
上記コードがif文の外にあるのはコピペミスですか?
> ここで i の値を表示しているためです。実際には i ではなく、arr[i] とするのでしょう。
コメントありがとうございます。arr[i]に書き換え、値が10まで出力されましたので、質問を修正いたしました。
> 上記コードがif文の外にあるのはコピペミスですか?
コメントありがとうございます。すみません、コピペミスであったため、修正いたしました。
現状、for ループの内側に while ループを入れてしまっていますので、奇数のみが表示されて処理が終了します。
for (int i = 0; i < arr.length; i++) {
if(arr[i]%2 == 0){
System.out.println("配列内の偶数は" + arr[i] + "です");
}
while(i<arr.length){
if(arr[i]%2 == 1){
System.out.println("配列内の奇数は" + arr[i] + "です");
}
i++;
}
}
ご返信ありがとうございます。「}」の位置をfor文に移動し、偶数の出力に成功しました。
質問を修正いたしました。
for (int i = 0; i < arr.length; i++) {
for 文で定義した変数 i のスコープ(通用範囲)は for 文の内部のみに限定されています。なので、次の while ループで i を使うと "cannot find symbol" というエラーメッセージが表示されることになります。そのため、while ループを実行する前に変数 i を定義する必要があります。
int i = 0;
while(i<arr.length){
:
ご返信ありがとうございます。
for 文とは別にwhile 文でも「i」の定義が必要になってくるのですね。
while文に「i」を定義し実行し、偶数と奇数の振り分けに成功しました。
改めて懇切丁寧にお教え頂き誠にありがとうございました。
ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?
回答1件
あなたの回答
tips
プレビュー