Javaの授業 9日目 ( オーバーロード、配列 )
・オーバーロード
引数の型と個数が違えば複数のメソッドに同じ名前を使える。
例
-----------------------------------------------------
public class MethodSample3 {
public static void main(String[] args) {
test();
test(0);
test("");
test(0,"");
test("",0);
}
public static void test(){
System.out.println("パターン1");
}
public static void test(int x){
System.out.println("パターン2");
}
public static void test(String str){
System.out.println("パターン3");
}
public static void test(int x, String str){
System.out.println("パターン4");
}
public static void test(String str, int x){
System.out.println("パターン5");
}
}
------------------------------------------------------
配列
①配列とは同じ型のデータを連続で並べたものです
② 配列の宣言
配列の宣言の仕方は次のうちどれかです。
型[] 変数名;
変数名 = new 型[要素数];
型[] 変数名 = new型[要素数];
型[] 変数名 = {データ , データ, データ, ・・・};
int型の場合
① int[] array; 配列の箱名だけ宣言する場合
array = new int[10];
※この書き方だけ2行かかります。
② int[] array = new int[10]; 配列の箱名+番号を宣言する場合
③ int[] array = {10, 20, 30,40}; 配列の箱名+番号+中身を宣言する場合
String型なら・・・
String[] array = {“a”, “b”, “c”};
注意点
配列を使う場合は型[]の[]を必ずわすれない
int x = new int[10];
int x = {10, 10,10};
はダメ
配列の最終要素番号はn-1になる
0から数えるのでそうなる。
int[] = new strArray[n]
なら最後は strArray[n-1]
箱3つなら
0番目、1番目、2番目
箱5つなら
0番目、1番目、2番目、3番目、4番目
3つのとき最後の番号は2
5つのとき最後の番号は4
サンプル①
-----------------------------------
public class Sample {
public static void main(String[] args){
//配列の宣言と代入
String[] strArray1 = new String[2];
strArray1[0] = "1";
strArray1[1] = "2";
System.out.println(strArray1[0]);
System.out.println(strArray1[1]);
//宣言と同時に代入
String[] strArray2 = {"1", "2","3"};
System.out.println(strArray2[0]);
System.out.println(strArray2[1]);
System.out.println(strArray2[2]);
}
}
------------------------------------
解釈
public class Sample {
public static void main(String[] args){
//宣言のみ
String[] =strArray3;
strArray3 = new String[2];
//配列の宣言と代入
String[] strArray1 = new String[2];
2個の要素を持つ配列を作った(strArray1[0],atrArray[1]という2つの箱を作った。
strArray1[0] = "1";
配列の0番目に”1”を代入した
strArray1[1] = "2";
配列の1番目に”2”を代入した
System.out.println(strArray1[0]);
System.out.println(strArray2[1]);
//宣言と同時に代入
String[] strArray2 = {"1", "2","3"};
3個の要素の1番目に”1”2番目に”2”3番目に”3”を代入して配列を作った(箱を3つ作った)
System.out.println(strArray2[0]);
System.out.println(strArray2[1]);
System.out.println(strArray2[2]);
}
}
public class Sample {
public static void main(String[] args){
//実践的な使い方
String[] strArray = {"A", "B", "C"};
for(int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);
}
}
}
難しそうに見えるが、組み合わさったことでルールが変わることはない。
for文はfor文の、配列は配列のルールでしか動かない。
丁寧に順番に見ていけば迷うことはない。
遅くてもいいから飛ばさない
for文の読み方
初期化 i = 0
条件式
i < strArray.length
strArray.length ⇒ 配列の要素数が取れる書き方
⇒3
つまり、i < 3
次の一歩 i++
for(int i = 0; i < 3; i++){・・・
i = 0
strArray[0]=”A”
プロンプトに表示されるもの “A”
i = 1
strArray[1]=”B”
プロンプトに表示されるもの ”B”
i = 2
strArray[2] = “C”
プロンプトに表示されるもの ”C”
i = 3
i<3がfalseになるのでループから抜ける。
配列の感覚がつかめない人は箱を実際書く。
------------------------------------------------
ArraySample1.java
public class ArraySample1 {
public static void main(String[] args) {
// int型の配列をarrayという変数名で宣言
int[] array;
// arrayというint型の配列を5の大きさで確保
array = new int[5];
// 配列の各要素にデータを代入
array[0] = 10;
array[1] = 100;
array[2] = 30;
array[3] = 50;
array[4] = 200;
// 配列の各要素のデータを出力
System.out.println(array[0]);
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println(array[3]);
System.out.println(array[4]);
}
}
-------------------------------------------------
わからない場合は常に箱を書いて数字を入れていく
-------------------------------------------------------------
ArraySample2.java
public class ArraySample2 {
public static void main(String[] args) {
// int型の配列をarrayという変数名で宣言し配列の大きさを5で確保
int[] array = new int[5];
// 配列の各要素にデータを代入
array[0] = 10;
array[1] = 100;
array[2] = 30;
array[3] = 50;
array[4] = 200;
// for文の繰り返しと変数の変化を用いて配列内の要素を全て出力
for(int i=0;i<5;i++){
System.out.println(array[i]);
}
}
}
-------------------------------------------------------------
for文
i=0 i<5 true
array[i]・・・array[0]・・・10
System.out.println(10);
プロンプトに10と表示される
i=1 i<5 true
array[i]・・・array[1]・・・100
System.out.println(100);
プロンプトに100と表示される
i=2 i<5 true
array[i]・・・array[2]・・・30
System.out.println(30);
プロンプトに30と表示される
i=3 i<5 true
array[i]・・・array[3]・・・50
System.out.println(50);
プロンプトに50と表示される
i=4 i<5 true
array[i]・・・array[4]・・・200
System.out.println(200);
プロンプトに200と表示される
i=5 i<5 false
for文から抜ける
ArraySample1.java
public class ArraySample3 {
public static void main(String[] args) {
//配列に初期データを与える
int[] array;
array = new int[]{10,100,20,50,200};
int sum = 0;
// for文の繰り返しを使い配列内の数値の合計値を計算
// 配列方の変数に「変数名.length」としてやることで配列の長さ(要素数)を取得することができる
for(int i = 0 ; i < array.length ; i++){
sum += array[i]; // sum = sum + array[i] という記述を省略した記述
}
System.out.println(sum);
}
}
int[] array = {1, 2, 3};
array.length⇒5 i<5
for文を見ていく
i = 0
sum += array[0];
sum = sum + array[0]
sum = 0 + 10 =10
i = 1
sum += array[1];
sum = sum + array[1]
sum = 10 + 100 =110
i = 2
sum += array[2]
sum = sum + array[2]
sum = 110 + 20 = 130
i = 3
sum += array[3]
sum = sum + array[3]
sum = 130 + 50 = 180
i = 4
sum +=array[4]
sum = sum + array[4]
sum = 180 + 200 = 380
順番どおりにいけば絶対答えはわかる
自分がやっている読み方で予想結果と実際の実行結果が食い違う人はどこか間違っている。
上のように1個ずつ順を追って読んでいくと分からない所が分かる。
ここまで学んだところで応用課題の提出の為1週間ほぼ自習らしいです。
その後Javaの序盤の最難関 「クラスとオブジェクト」へ。
Javaの授業 8日目 ( メソッド )
8日目感想
教科書の中の情報の現時点で覚える必要があることの取捨選択が難しい。
わからないことを放置して先へ進むでいいのか悪いのかw
明日ぐらいで一区切り終えて来週一杯ぐらい応用課題1の為の時間を取るらしい。
課題1は今日提出してOK出た。
が、上巻の内容を終えて下巻へと先に進むのが怖いのでちょっと講義より進んだ
とこくらいで色々書いて遊んでおこうと思います+q+
├`)講義内容今のところ予定の1.5倍速で過去最速らしい。。
以下講義内容
復習
while文
while(条件式){
処理文
}
※for文との違い
初期化と次の一歩がない。
メソッドについて
①処理の内容を切り分ける時に使用します
初期化
↓
処理①
↓
引数受け渡し → メソッド1:開始 →処理②
メソッド1 ↓
↓ 戻り値の取得 ← メソッド1:終了
処理③
②メソッドの構文
[修飾子]戻り値の型 メソッド名(引数1,引数2,…){
}
③修飾子、戻り値の型、メソッド名、引数
・修飾子 「public static」今の段階では決まり文句として扱う。
・戻り値の型
int,String,boolian等型を指定。メソッドを呼び出した時に受け取る。
voidは戻り値が無いことを示す。
戻り値が指定されている場合、メソッド内に「return」キーワードが必要。
「return」に実際戻り値として返す値を設定する。
・メソッド名 メソッドの名前を示す。変数同様メソッド名自体は意味なし。
・引数 メソッド呼び出し時に受け渡したい値を示す。
引数は「型 変数名」というように変数宣言と同じ書き方をする。
④メソッドのサンプル
※メインメソッドの詳細を見る
public static void main(String[] args){
} ↑ ↑ ↑ ↑
修飾子 戻り値の型 メソッド名 引数(型 変数名)
・戻り値無しのメソッド宣言
public static void test1(int num){
}
・int型の戻り値を返すメソッド
public static int test2(int num){
return 10;
}
・引数を持たないメソッド
public static void test3(){
}
・
※メソッドの宣言はmainメソッドの外でする。
---------------------------------------------
public class Sample{
public static void main(String[] args){
int(x) = test(5);
}
//メソッドの宣言
public static int test(int a){
int i =10;
return i;
}
}
---------------------------------------------
・メソッド名が一緒、かつ引数の型が同じメソッドを呼び出す。
test(5); →メソッド名がtest、かつ引数の型が int のメソッド
例
---------------------------------------------
public class MethodSample1 {
public static void main(String[] args) {
int sum = 0;
sum = getTotal(10);
System.out.println(sum);
sum = getTotal(100);
System.out.println(sum);
}
public static int getTotal(int num){
int sum = 0;
for(int i=1;i<num;i++){
sum += i;
}
return sum;
}
}
---------------------------------------------
メソッドを切り出して書くことによって繰り返して書く量を減らせる。
Javaの授業 7日目 [ while文 ]
7日目感想
ビデオ学習でやった時while文でちょいつまづいた。
for文との構文の違いで宣言するタイミング、次の一歩を入れる処理
の記述場所に注意。
今日は応用課題まですすんだが問題が丸投げすぎて悩むw
以下授業内容
復習
for文
※わからなくなりそうなら処理を丁寧に追う。
while文
【 条件式 】
[true]↓ ↓[false]
処 理 処理を抜けて次へ
構文
while(条件式){
処理
}
例
-----------------------------------------------
public class Sample4{
public static void main(String[] args){
int x = 1;
while(x < 3){
System.out.println(x);
x++;
}
}
}
-----------------------------------------------
※処理を追ってみる
x = 1 → 2 → 3(ここで条件式[false])以下詳細
■x = 1
■x < 3
□1 < 3
□[true]
■system.out.println(x)
□system.out.println(1) →コマンドプロンプトに1を表示
■x++; → x = x + 1
□x = 1 + 1
□x = 2
■x < 3
□2 < 3
□[true]
■System.out.println(x)
□System.out.println(2) →コマンドプロンプトに2を表示
■x++;
□x = 2 + 1
□x = 3
■x < 3
□3 < 3
□[false] → {}内の処理を抜ける
例2 処理を追う
-------------------------------------------------
public class Sample4{
public static void main(String[] args){
int x = 1;
int sum = 0
while(x < 3){
sum += x;
x = x + 1;
}
System.out.println(sum);
}
}
-------------------------------------------------
x = 1 → 2 → 3
sum = 0 → 1 → 3
*******************************************
問題1
1から100までの数を足し合わせた数を計算する
プログラムをwhile文を用いて作ってください。
(for文は、使用禁止)
*******************************************
問題2
九九表が表示されるように以下のプログラムを完成させてください。
【出力結果】
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
******************************************************************
問題3
FizzBuzz問題 ※while文を使用してください
1から100までコマンドプロンプト上に表示します。
ただし3で割り切れる場合は、「Fizz」
5で割り切れる場合は、「Buzz」
3でも5でも割り切れる場合は、「FizzBuzz」
と表示するようにしてください。
【出力結果】
1
2
Fizz
4
Buzz
Fizz
7 以下略
****************************************************
※while文で書けたらfor文でも書いてみる
答えいる?+q+