超長くなってしまったので暇だったら読んでください。
Java
1import java.util.Arrays;//配列を文字列変換する Arrays.toString()を使うためのインポート
2
3public class Practice_1 {
4
5 public static void main(String[] args) {
6
7
8
9 String[] a1 = {"1","a","2","b","3","c"};
10
11 int[] ans1 = makeArray(a1); //makeArrayメソッドに a1配列を渡して、結果をint型の配列 ans1に格納する
12
13 System.out.println(Arrays.toString(ans1)); //int型の配列なので、出力のためにString(文字列)に直す
14 }
15
16 static int[] makeArray(String[] a) { //String型の配列を受けとって、int型の配列を結果として戻すメソッドの作成
17
18 int[] ans = new int[6]; //ものが6個入るint型の配列を新しく作る
19
20 for(int i = 0; i < a.length; i++) { //このメソッドに渡したString型の配列(a1)の長さの分だけ繰り返す
21 try {
22 ans[i] = Integer.parseInt(a[i]); //String型の配列の[?]番目を取得して、Integerに変換する。
23 }catch (NumberFormatException ae){ //変換できなければこのcatch文に入るが、何も処理をいれてないので例外の握り潰し
24 }
25 }
26 return ans; //int型の配列をmainメソッドに結果として戻す
27 }
28}
既に解説してくださっている方がいますが、初心者目線で私も書いておきます。
二つを見比べながら理解を深めてもらえると幸いです。
まずはmainメソッドから
Java
1 public static void main(String[] args) {
2
3
4
5 String[] a1 = {"1","a","2","b","3","c"};
6
7 int[] ans1 = makeArray(a1);
8
9 System.out.println(Arrays.toString(ans1));
10 }
質問者さんが作ったString型の配列 a1 を後述する makeArray()という処理をするためのメソッドに渡しています。
メソッドについて
この「渡す物」のこと(今回だと a1)を「引数」といいます。
引数について
そして、 makeArray()メソッドで頑張って導きだした「結果」を、
int[] ans1 int型の配列 ans1 に格納します。
この結果のことを、「戻り値」といいますが、後述します。
戻り値について
ではSystem.out.println(Arrays.toString(ans1));はとりあえず、放っておいてメソッドの解説です。
makeArrayメソッドについて
Java
1 static int[] makeArray(String[] a) {
2 int[] ans = new int[6];
3
4 for(int i = 0; i < a.length; i++) {
5 try {
6 ans[i] = Integer.parseInt(a[i]);
7 }catch (NumberFormatException ae){
8 }
9 }
10 return ans;
11 }
ここで、先ほどの「引数」と、「戻り値」の知識が生きてきます。
まずはここに注目してください。
Java
1 static int[] makeArray(String[] a) {
static については今は割愛します。
2番目の int[] これが、「戻り値」を表します。
このメソッドで最終的に「結果」として何を出しているのかをここで決めています。
そして次に makeArrayの後ろに書かれている、 makeArray(String[] a)ですが、
これが、このメソッドに「何を渡してほしいのか、何を処理してほしいのか」を表す『引数』となります。
今回ですと、質問者さんがつくった
String[] a1 = {"1","a","2","b","3","c"}; これですね。
String型の配列を、このメソッドでは 「a」という名前で使いますと決めています。
では次に、
Java
1 int[] ans = new int[6];
です。
ここで、最終結果の「戻り値」としてmainメソッドに戻す int型の配列を新しく生み出しています。
この配列は new int[6] といれているので、6つまで値を入れますよ、と決めています。
次に 一応for文についての解説です。
Java
1 for(int i = 0; i < a.length; i++) {
まず一番初めの **int i = 0; ** これは普通の変数宣言と一緒です。
このfor文の中で i を使います。初期値は0です。と決めています。
次に、 i < a.length; です。
これは、 i が a という配列の長さ未満のときは繰り返しますよ、ということです。
今回ですと、 aという配列は {"1","a","2","b","3","c"}; の 6個値が入っているので、6回for文が繰り返されます。
最後に i++ ですが、これは「インクリメント」といって、i の数を1増やします。ということです。
では最後にtry-catch文です。
Java
1 try {
2 ans[i] = Integer.parseInt(a[i]);
3 }catch (NumberFormatException ae){
4
5 }
ここら辺は勉強したてだと思うので、わかるかと思います。
「引数」でもらった「配列a」を、数値に変換しています。
そして最終結果として mainメソッドに返す「戻り値」のint型の配列「ans」に数値を格納します。
この時変換できなければ、NumberFormatExceptionとなります。
そして最後は
ですね。
これが何度もでてきた 「戻り値」 になります。
**return 戻り値; **と記述します。
今回ですと、ans なので、 int型の配列 ans を return(このメソッドを呼んでいるところに返す)するよ~と決めています。
だいぶ長くなってしまいましたが、こんなところでしょうか。
・メソッド
・引数
・戻り値
・for文
・配列
このあたりをマスターできると、今回のこのコードの理解も深まると思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/18 14:29
2019/02/18 14:58
2019/02/18 15:11
2019/02/19 00:11
2019/02/19 00:17
2019/02/19 12:32