みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Javaプログラム内容について

添付資料の処理内容がわからないので、どこが違うかご指摘ねがいます。

1.mainのgetInversedArray(4,8,9)がint[]メソッドに飛ぶ
2.newで4 8 9を別々に扱えるようにする
3.forのa[i] = array[(array.length - 1) - i]が9 8 4を出力する←ココの処理が特にわからない
4.mainのforで、int[]メソッドの値を出力する

3.の処理内容を教えて頂きたいのと、I++がいまいち感覚が掴めていないです。
forで使用すれば、指定した値を1ずつ増加させて上限まで計算させるものという認識なので、for内では、(4 8 9)の値に対して、0から1ずつ足して~9までの10サイクルを計算しているから、10個の出力が出てきそうなのに、3個の出力しか出てきてない。あれ?という状態です。

散漫な文章ですみませんが、ご協力宜しくお願いします。

投稿日時 - 2017-10-16 10:13:54

QNo.9386415

困ってます

質問者が選んだベストアンサー

>添付資料の処理内容がわからないので、どこが違うかご指摘ねがいます。
Javaに限らずプログラミングの初心者ですか?

>1.mainのgetInversedArray(4,8,9)がint[]メソッドに飛ぶ
解釈に誤りがあります。
b2 = GetInversdArray(b); は次のように解釈します。
getInversedArray(b)は配列数b({4,8,9})の並び順を反転するためのサブルーチンです。
mainからサブルーチンを呼び出して配列数b2へ代入することを意味します。

>2.newで4 8 9を別々に扱えるようにする
配列数のnewはmainの配列数bを引き継いだ配列値です。
配列の要素はarray.lengthで算出されますのでnew[3]={4,8,9}がサブルーチンへ渡され、サブルーチンでは配列値aへ代入しています。

>3.forのa[i] = array[(array.length - 1) - i]が9 8 4を出力する←ココの処理が特にわからない
i=0のとき、a[0]=array[(3-0)-1] → a[0]=array[2] → a[0]=9
i=1のとき、a[1]=array[(3-1)-1] → a[1]=array[1] → a[1]=8
i=2のとき、a[2]=array[(3-2)-1] → a[2]=array[0] → a[2]=4

>4.mainのforで、int[]メソッドの値を出力する
回答を省略する。

>for内では、(4 8 9)の値に対して、0から1ずつ足して~9までの10サイクルを計算しているから、10個の出力が出てきそうなのに、3個の出力しか出てきてない。あれ?という状態です。
提示のforループでは0~b.length未満(0~2)です。(bの要素数=b.length=3)
従って、3個の値が出力されます。

プログラムで命令したことは忠実に実行されますので予想と異なる結果が出力されたときはプログラマーの思考に誤りがあります。

投稿日時 - 2017-10-16 17:26:33

お礼

初心者にご丁寧に答えて頂き大変感謝しております。
本当にわかり易く記載して頂き、流れがイメージすることができました。
ありがとうございました。

投稿日時 - 2017-10-16 18:54:18

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

forについての理解が間違っています。「~9まで」なんてどこに書いてあるのでしょうか?

投稿日時 - 2017-10-16 15:32:06

ANo.1

これ、ソースを読む限り「配列の並びを逆にする」プログラムですけど?

なので4,8,9なら、9,8,4と出力されますね。

今スマホしかないので、詳細な説明は書けません。

投稿日時 - 2017-10-16 12:59:34