質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Q&A

解決済

3回答

2293閲覧

for文の処理が理解できないので教えてください!

kaison

総合スコア11

Java

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

0グッド

0クリップ

投稿2019/07/21 02:37

編集2019/07/21 03:03

前提・実現したいこと

for文の処理が理解できないので教えてください!

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

Java

1int[] numbers={1, 4, 6, 9, 13, 16}; 2 3 int oddSum = 0; 4 int evenSum = 0; 5 6 7 8 for(int i=0;i<numbers.length;i++){ 9 if(numbers[i]%2==0){ 10 evenSum+=numbers[i]; 11 }else{ 12 oddSum+=numbers[i]; 13 } 14 } 15 16 System.out.println("偶数の和は" + evenSum + "です"); 17 System.out.println("奇数の和は" + oddSum + "です");

int[] numbers={1, 4, 6, 9, 13, 16};

int oddSum = 0; int evenSum = 0; for(int i=0;i<numbers.length;i++){ if(numbers[i]%2==0){ evenSum+=numbers[i]; }else{ oddSum+=numbers[i]; } } System.out.println("偶数の和は" + evenSum + "です"); System.out.println("奇数の和は" + oddSum + "です");

試したこと

i が0で numbers.lengthの要素 0から始まるなら
0<0の段階でループが終了すると思うのですが
上のコードは、エラーが起きず実行できています。
私の認識はどこが間違っているのでしょうか。

どなたかわかる方がいましたら回答お願いします。

補足情報(FW/ツールのバージョンなど)

実行結果は

偶数の和は26です
奇数の和は23です

このようにでています。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2019/07/21 02:47

マークダウンの仕方が間違ってる。 コードを2つの```で挟まれた「ソースコード」と書かれた行を書き換える形で入れてください。 また、1つ目の```の後に「ここに言語を入力」とか書かれている場所を「java」に書き換えてください。
kaison

2019/07/21 02:58

ありがとうございます。 訂正します。
m.ts10806

2019/07/21 04:13 編集

途中でコードブロック切れてますよ。 PCであればプレビュー画面が右側にでていますのでそちらを見ながら調整してください。
guest

回答3

0

ベストアンサー

i が0で numbers.lengthの要素 0から始まるなら

ここの認識が間違っています。
配列.lengthは配列作成時の配列の長さを表します。
numbersは{1, 4, 6, 9, 13, 16}という6つの要素で初期化していますから、
再度numbersに配列を代入しない限りnumbers.lengthは6で一定です。

投稿2019/07/21 03:14

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaison

2019/07/21 03:18

なるほど! やっとわかりました!! ありがとうございます!!!!
guest

0

numbers.lengthってのは、要素数を表します

投稿2019/07/21 02:39

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaison

2019/07/21 03:13

それは承知していますが なぜnumbers.lengthが0とき(要素の最初の数が0なので) i=0<0 になって、最初のループで中断されないのでしょう。 ちなみに初学者なので優しく教えていただけると幸いです。
y_waiwai

2019/07/21 03:51

length が0のときは、forループは回りません。即終了します。 なにか勘違いなされてるんでは。
guest

0

Lengthは「長さ」であって「インデックス」ではありません。

投稿2019/07/21 02:38

gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swordone

2019/07/21 03:09

誰だ?マイナスしたの
kaison

2019/07/21 03:16

Javaの配列に出てきた問題です。 lengthは要素の数を表しています。 要素の始まりは0なので 0<0でループが中断されるのがセオリーだと思いますが違いますか?
gentaro

2019/07/21 03:37

swordoneさん まぁアホはどこにでも一定数いるので気にしないで良いかなと思ってますが、お気遣いは感謝します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問