pi-6. Javaプログラミングにおけ
るループ処理と配列・リスト操作
1
金子邦彦
Java マスター講座:基礎から応用まで)
URL: https://www.kkaneko.jp/pro/pi/index.html
2
物体の落下距離: 9.8 × (時間)
2
÷ 2
時間は 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
同じ式の計算を 11 回繰り返し
Java プログラム
実行結果
全体まとめ
for による繰り返し(ループ)
同じ処理や操作を繰り返す
拡張 for により,リストなどのコレクションに
ついて,繰り返し処理ができる
3
Java プログラム
実行結果
アウトライン
4
番号
項目
復習
6
-1
配列と繰り返し(ループ)
6
-2
リストと繰り返し(ループ),拡張
for
6
-3
マップと繰り返し(ループ),拡張
for
各自、資料を読み返したり、課題に取り組んだりも行う
この授業では、Java を用いて基礎を学び、マスターする
オブジェクトとメソッド
メソッド: オブジェクトに属する操作や処理.
メソッド呼び出しでは,引数を指定することがある.引数
(ひきすう)は,メソッドに渡す値のこと
hero.attack("fence", 36, 26)
5
hero.moveDown()
hero オブジェクト
moveDown() メソッド
間を「.」で区切っている
Java プログラムの書き方
代入オブジェクト名 =
式または値またはメソッド呼び出し
メソッドアクセスオブジェクト名 .
メソッド名 +「() (引数を付けることも)
6
x = 100
a = x + 200
enermy1 = hero.findNearestEnemy()
hero.attack(enemy1)
プログラムの例
その他,属性アクセス,関数呼び出し,制御,「*,
+」などの演算子,コマンド,定義など
リスト
リストは,同じ型の要素の並び
リストの要素には順序がある0から始まる
番号添字)が付いている
要素の削除挿入によりサイズが増減する
7
15 32 23
20
1
3 4
マップは,キー値(バリューペア
の集まり
同じ値のキー2回以上登場しない
マップ (Map)
8
キー
値(バリュー)
1
Red
2
Yellow
3
Blue
Java Tutor の起動
ウェブブラウザを起動する
Java Tutor を使いたいので,次の URL を開く
https://pythontutor.com/java.html
Java」をクリック 編集画面が開く
9
Java Tutor でのプログラム実行手
10
(1)Visualize Execution」をク
リックして実行画面に切り替える
(2)Last」をクリック.
(3) 実行結果を確認する.
(4)Edit this code」をク
リックして編集画面に戻る
Java Tutor 使用上の注意点①
実行画面で,次のような赤の表示が出ることがある
無視してよい
過去の文法ミスに関する確認表示
邪魔なときは「Close
11
Java Tutor 使用上の注意点②
please wait ... executing」のとき,10秒ほど待つ
混雑しているときは, Server Busy・・・」
というメッセージが出ることがある.
混雑している.少し(数秒から数十秒)待と自
動で表示が変わる(変わらない場合には,操作を
もう一度行ってみる)
12
Java Tutor でのステップ実行
ステップ実行により,プログラム実行の流れ
を確認できる
13
6-1. 配列と繰り返し(ループ)
14
配列
データの並びで,0から始まる番号(添
字)が付いている
15
演習
資料:17 18
【トピックス】
配列
16
Java Tutor のエディタで次のプログラムを入れ
17
月の日数についてのデータを作る。サイズ 13 の配列
うるう年のことは考えないことにする
9月について表示させてみて確認も行う.
実行し,結果を確認する
18
Visual Execution」をクリック.そして「Last」をクリック.結果を確認.
Edit this code」をクリックすると,エディタの画面に戻る
結果の
30」が表示
されるので確認
繰り返し(ループ)
繰り返し(ループ)では,同じ処理や操作を繰
り返す
19
配列の中身の表示(要素は4個ある)
表示を 4 回繰り返し
Java プログラム
実行結果
繰り返しのプログラム例
20
for(i = 0; i <= 3; i++)」のあとに「{
配列の組み立て
繰り返し
public class YourClassNameHere {
public static void main(String[] args) {
double x[] = {10, 20, 30, 40};
int i;
for(i = 0; i <= 3; i++) {
System.out.println(x[i]);
}
}
}
字下げを行うことで,
プログラムを読みやすくしている
演習
資料:22 27
トピックス
配列
繰り返し(ループ)
for
21
Java Tutor のエディタで次のプログラムを入れ
22
配列の中身の表示(要素は4個ある)
表示を 4 回繰り返し
実行し,結果を確認する
23
Visual Execution」をクリック.そして「Last」をクリック.結果を確認.
Edit this code」をクリックすると,エディタの画面に戻る
結果を確認
Java Tutor のエディタで次のプログラムを入れ
24
物体の落下.010秒まで.1秒ごと
実行し,結果を確認する
25
Visual Execution」をクリック.そして「Last」をクリック.結果を確認.
Edit this code」をクリックすると,エディタの画面に戻る
ここをドラッグすると,
表示枠が広がる
Java Tutor のエディタで次のプログラムを入れ
26
配列 x のすべての要素の 1.1 倍を y に格納
実行し,結果を確認する
27
Visual Execution」をクリック.そして「Last」をクリック.結果を確認.
Edit this code」をクリックすると,エディタの画面に戻る
このプログラムは引き続き使用する.消さずに残しておくこと.
演習
資料:29 30
トピックス
配列
繰り返し(ループ)
for
ステップ実行
28
①「Step 1 of 21」と表示されているので,
全部で,ステップ数は 21 あることが分かる
(ステップ数と,プログラムの行数は違うもの
29
ステップ実行したいので,「Next」をクリッ
しながら,矢印の動きを確認
Next」ボタンを何度か押し,それ以上進めな
くなったら終了
30
見どころ
6行目7行目
繰り返される
実行が進むと,
y の中身が更新される
6-2. リストと繰り返し(ループ),
拡張 For
31
Java for 文の種類
for : 変数値を変化させるもの
拡張 for : コレクション(リストやマップなど)
要素をたどるためのもの.
32
i の値: 0 1 2 3 4
s の値: “15” “8” → “6” “32” “23”
m は、文字列を要素とする
コレクションオブジェクト
演習
資料:34 35
トピックス
リスト
ArrayList
拡張 for
33
Java Tutor のエディタで次のプログラムを入れる
34
拡張 for 文を使ってみる
実行し,結果を確認する
35
Visual Execution」をクリック.そして「Last」をクリック.結果を確認.
Edit this code」をクリックすると,エディタの画面に戻る
リストの生成,要素の挿入,拡 for
リストの生成
要素の挿入
拡張 for
36
m: オブジェクト名
Stringは,
要素のクラス
m: オブジェクト名,add: メソッド, "15": 挿入したい要素
for(String s: m) {
System.out.println(s);
}
m.add("15");
ArrayList<String> m = new ArrayList<String>();
全体まとめ
基本データ型 整数浮動小数文字boolean
(true/falseを扱う)
配列は,データの並びで,0から始まる番号(添
字)が付いている
条件分岐
繰り返し(ループ)
37
全体まとめ
for による繰り返し(ループ)
同じ処理や操作を繰り返す
拡張 for により,リストなどのコレクションに
ついて,繰り返し処理ができる
38
Java プログラム
実行結果
関連ページ
Java プログラミング入門
GDB online を使用
https://www.kkaneko.jp/pro/ji/index.html
Java の基本
Java Tutor, GDB online を使用
https://www.kkaneko.jp/pro/pi/index.html
Java プログラム例
https://www.kkaneko.jp/pro/java/index.html
39
資料中のソースコード 6-1
public class YourClassNameHere {
public static void main(String[] args) {
int days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
System.out.println(days[9]);
}
}
40
資料中のソースコード 6-1
public class YourClassNameHere {
public static void main(String[] args) {
double x[] = {10, 20, 30, 40};
int i;
for(i = 0; i <= 3; i++) {
System.out.println(x[i]);
}
}
}
41
資料中のソースコード 6-1
public class YourClassNameHere {
public static void main(String[] args) {
double x[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int i;
for(i = 0; i <= 10; i++) {
System.out.println((9.8 / 2) * x[i] * x[i]);
}
}
}
42
資料中のソースコード 6-1
public class YourClassNameHere {
public static void main(String[] args) {
double x[] = {8, 6, 4, 2, 3};
double y[] = {0, 0, 0, 0, 0};
int i;
for(i = 0; i <= 4; i++) {
y[i] = x[i] * 1.1;
}
}
}
43
資料中のソースコード 6-2
import java.util.ArrayList;
public class YourClassNameHere {
public static void main(String[] args) {
ArrayList<String> m = new ArrayList<String>();
m.add("15");
m.add("8");
m.add("6");
m.add("32");
m.add("23");
for(String s: m) {
System.out.println(s);
}
}
}
44