質問するログイン新規登録

Q&A

解決済

1回答

1985閲覧

【Java】 for文とwhile文を用いて配列内の値を偶数と奇数に振り分けたい

36549

総合スコア3

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

0クリップ

投稿2024/07/22 03:09

編集2024/07/22 07:04

1

0

実現したいこと

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文での偶数奇数を求めるソースコード

補足

特になし

melian👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

melian

2024/07/22 03:19 編集

> 数字の配列で「1~10」まで入れたものの出力結果では「9」までしか表示されません。 System.out.println("偶数は" + i + "です"); System.out.println("奇数は" + i + "です"); ここで i の値を表示しているためです。実際には i ではなく、arr[i] とするのでしょう。この他にも勘違いをしていると思われる部分がありますが、とりあえずは以上です。
meg_

2024/07/22 04:41

> System.out.println("偶数は" + i + "です"); 上記コードがif文の外にあるのはコピペミスですか?
36549

2024/07/22 05:04

> ここで i の値を表示しているためです。実際には i ではなく、arr[i] とするのでしょう。 コメントありがとうございます。arr[i]に書き換え、値が10まで出力されましたので、質問を修正いたしました。
36549

2024/07/22 05:04

> 上記コードがif文の外にあるのはコピペミスですか? コメントありがとうございます。すみません、コピペミスであったため、修正いたしました。
melian

2024/07/22 06:21 編集

現状、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++;  } }
36549

2024/07/22 07:08

ご返信ありがとうございます。「}」の位置をfor文に移動し、偶数の出力に成功しました。 質問を修正いたしました。
melian

2024/07/22 07:14 編集

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){   :
36549

2024/07/22 07:24

ご返信ありがとうございます。 for 文とは別にwhile 文でも「i」の定義が必要になってくるのですね。 while文に「i」を定義し実行し、偶数と奇数の振り分けに成功しました。 改めて懇切丁寧にお教え頂き誠にありがとうございました。
36549

2024/07/22 07:36

ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?
guest

回答1

0

ベストアンサー

数字の配列で「1~10」まで入れたものの出力結果では「9」までしか表示されません。

java

1System.out.println("偶数は" + i + "です"); 2System.out.println("奇数は" + i + "です");

ここで i の値を表示しているためです。実際には i ではなく、arr[i] とするのでしょう。

下記のプログラムを実行すると奇数のみ表示され、

以下の様に、for ループの内側に while ループを入れてしまっていますので、結果として奇数のみが表示されて処理が終了します。for 文と while 文を分ける必要があります。

java

1for (int i = 0; i < arr.length; i++) { 2 if(arr[i]%2 == 0){ 3 System.out.println("配列内の偶数は" + arr[i] + "です"); 4 } 5 6 while(i<arr.length){ 7 if(arr[i]%2 == 1){ 8 System.out.println("配列内の奇数は" + arr[i] + "です"); 9 } 10 i++; 11 } 12}

for文の偶数の表示はされたが奇数を表示させるための「while()」のカッコ内の文言がわからない状態

for 文で定義した変数 i のスコープ(通用範囲)は for 文の内部のみに限定されています。なので、次の while ループで i を使用すると "cannot find symbol" というエラーメッセージが表示されることになります。そのため、while ループを実行する前に変数 i を定義して初期化しておく必要があります。

java

1 int i = 0; 2 while(i<arr.length){ 3 :

投稿2024/07/22 07:45

melian

総合スコア21745

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問