初心者です。
以下のことで困っております。
どなたか教えていただければ幸いです。
どうぞよろしくお願いいたします。
前提・実現したいこと
スッキリわかるJava入門という本の、198ページに載っているコード(リスト5-13)が、どうしてこのような結果になるのかわかりません。
該当のソースコード
Java
1public class Main{ 2 public static void incArray(int[] array) { 3 for(int i = 0; i<array.length; i++){ 4 array[i]++; 5 } 6 } 7 public static void main(String[] args){ 8 int[] array = {1,2,3}; 9 incArray(array); 10 for(int i: array){ 11 System.out.println(i); 12 } 13 } 14}
試したこと
試したことではございませんが、自分の中の解釈で「こうではないか」とコードの動きについて考えていることを記載いたします。
1.まず、コードの上部でincArrayというメソッドを定義している。
2.コード下部で上記incArrayを呼び出している。
このとき、引数は配列(1,2,3が入った)が入っている。
3.先程定義したメソッドの中で、for文で繰り返しをしており、i= 0から、array.length(配列の長さなので3)未満(つまり2)までを繰り返し、array[i]に入れる。(つまり、array[0]⇒array[1]⇒array[2]という風に繰り返される。
※ここで、array[i]++がどのような動きをするのかわかりません!!(++の働き、それによってどうなるのか、array[i]だけでも順に増えていくのではないのか?)
4.繰り返しが終わると、呼び出し元(incArray(array))にその結果が返される。
5.その下の行で、for文により繰り返し処理が行われる。(配列array(1,2,3)が順にint iに代入され、System.out.printlnにより、1,2,3が出力される)
ここで、この本では、「結果が2,3,4になることを確認してください」と書いてあるのですが、どこで、2,3,4になったのかがわかりません。
■わからないことリスト
・上記※印の内容が不明
・incArray(array)が実行されたのは良いものの、それが何に影響しているのか(結局、出力されるのは、System.out.printlnなので、incArrayの必要性や、その下のfor文とのつながり方がわかりません)
・僕の上記の考え方では、1,2,3の出力となるのですが、本には2,3,4となるはずと書かれている
・上記コードをエクリプスで実行しようとした場合に、エラーとなる。
※incArrayとmain(メソッド)がそれぞれ、「staticとして宣言できません」と出ます。こちらに関しては、エクリプス自体も初心者でほぼ使い方がわかっていないので、そのせいかもしれませんが。。
補足情報(FW/ツールのバージョンなど)
エクリプスエラーの件につきまして、追加で写真を投稿いたします。
※全ての状況を言葉で説明しきれない(把握できていないため)添付写真を参照いただけると助かります。
回答5件
あなたの回答
tips
プレビュー