::Querfloete Galerie::
|
::はじめてのプログラミング::
|
::PHPの学習::
習い始めのJAVAソース
■Les001.java■
//出力:文字列 public class Les001 { public static void main(String[] args) { System.out.println("koyuki[文字列]"); //文字列の出力(文字列は"と"で囲む) } }//koyuki[コメント] //(//以降) /*[コメント範囲]*/ //(/*と*/で囲む 複数行可)
■Les002.java■
//出力:文字列・数値 public class Les002 { public static void main(String[] args) { System.out.println("http://koyuki.ld.infoseek.co.jp/"); //文字列の出力 System.out.println("123"); //文字列の出力 System.out.println(123); //数値の出力 } }
■Les003.java■
//変数の型 int public class Les003 { public static void main(String[] args) { int number1 = 2; //変数の定義と初期化(初期値の代入) int number2 = 3; //int…32bit整数値 System.out.println(number1); //number1の初期値を表示 2 number1 = number1 + number2; //number1にnumber2を足す System.out.println(number1); //足算後のnumber1を表示 5 System.out.println(number2); //number2初期値の表示 3 System.out.println(number1 + number2);//さらにnumber1と2を足した数値を表示 8 } }
■Les004.java■
//変数の定義と初期化を分けた場合 public class Les004 { public static void main(String[] args) { int n; //変数の定義 n = 000; //変数の初期化 int N; N = 999; System.out.println(n); //出力は「0」 System.out.println(N); //出力は「999」 大文字・小文字で区別されるが慣習として変数は小文字 } }
■Les005.java■
//計算1 public class Les005 { public static void main(String[] args) { int a = 2; int b = 1; int c = a + b; System.out.println("a=" + a); System.out.println("b=" + b); System.out.println("c=" + c); System.out.println("+" + (a + b)); //「"+" a + b」だと「+12」となる System.out.println("-" + (a - b)); //煩雑になるのでprintlnでは計算しないようにするのが望ましい。 System.out.println("*" + (a * b)); //掛算 System.out.println("/" + (a / b)); //割算 System.out.println("%" + (a % b)); //剰余(割算の余り) } }
■Les006.java■
//計算2 public class Les006 { public static void main(String[] args) { int a = 5; int b = 2; int c = 2147483647; int d = a + b + c; //int型オーバー。数値は返されるがエラー値 int e = a - b - c; int f = 2 * a - b - c; System.out.println(a); System.out.println(b); System.out.println(c); System.out.println(d); System.out.println(e); System.out.println(f); } }
■Les007.java■
//変数の型 整数いろいろ public class Les007 { public static void main(String[] args) { byte by = 127; short sh = 32767; int in = 2147483647; long lo = 2147483647; //longでも2147483648以上で初期化したい場合は「2147483648l」(末尾にlを入れる)とする System.out.println(by); System.out.println(sh); System.out.println(in); System.out.println(lo+1);//計算で2147483648以上になる分には問題なし //計算で範囲以上の数字になるとエラー値が返される。文法エラーも論理エラーも出ない。(いやこれを論理エラーというのか?) } }
■Les008.java■
//少数の変数 double型 public class Les008 { public static void main(String[] args) { double shousuu = 1.2; //doubleは1.2、1.2f、1.2dのように使用可能。 // int kei2 = a + shousuu; //→int型で少数を扱えないので文法エラーが起こる System.out.println(shousuu);//ただし1.2fの結果は1.2000000476837158。 //floatで使用できる少数は、1.2fのみ。(コンパイルできない)整数や1.0は可。 } }
■Les009.java■
//if文 public class Les009 { public static void main(String[] args) { int ten = 90; if (ten >= 90) { System.out.println("大変よくできました!d(^o^)b"); } else if (ten >= 70) { System.out.println("よくできました。o(^-^)o"); } else { System.out.println("もっとがんばりましょう!(=_=)"); } System.out.println("この結果により、ChristmasPresentが決まります。お楽しみに!"); } }
■Les010.java■
//for文 public class Les010 { public static void main(String[] args) { for (int i = 0 ; i < 0 ; i++) { //条件に当てはまれば実行される。(変数宣言&初期化 ; 実行する条件 ; 実行後都度処理) System.out.println((i + 1) + "koyuki"); //i++はPG実行(koyukiと表示)後処理される。 } } }
■Les011.java■
//for&if文 public class Les011 { public static void main(String[] args) { for (int i = 0 ; i <= 13 ; i++) { if (i == 6) { System.out.println((i + 1) + " "); //改行付 i=6(7が表示された)後に改行 } //System.out.println(); なら改行のみ。 else { System.out.print((i + 1) + "\t"); //改行無 タブで揃える。ただし上の位が揃うのみ。 } //System.out.print("\n"); でも改行。 } } }
■Les012.java■
//まずはfor文のネスト(入れ子)で。 //カレンダーもどき1。1日が日曜(左端)、強制的に31日まで。 public class Les012 { public static void main(String[] args) { System.out.println(" S M T W T F S"); //曜日表示 for (int j = 0 ; j < 31 ; j++) { //この条件でも内のfor()に入れば32以降も処理される場合がある for (int i = 0 ; i%7 != 6 ; i++) { //7で割って余り6でない間(右端:土曜でない間)処理する if (j < 9) { System.out.print(" "); //9日までは十の位の分のスペースを空ける } if (j < 31) { System.out.print((j+ 1) + " "); } j++; } if (j < 9) { //※ここから上と重複しているのでPGとして良くなさそうである... System.out.print(" "); //9日までは十の位の分のスペースを空ける } if (j < 31) { System.out.println((j + 1) + " ");//改行付出力。j=6で7回目、13で14回目、... } } } }
■Les013.java■
//カレンダーもどき2。(同上) public class Les013 { public static void main(String[] args) { System.out.println(" S M T W T F S"); for (int j = 0 ; j < 31 ; j++) { if (j < 9) { System.out.print(" "); //1桁目で数字を揃えるため、9まで(1桁)はスペースを入れる。 } System.out.print((j + 1) + " ");//0から始まるので1足した数字で表示 if (j%7 == 6) { //7日毎に改行 System.out.print("\n"); //System.out.println();と同じ } } } }
■Les014.java■
//カレンダーもどき3。2に「日にち」と「1日の曜日」の指定を追加。 public class Les014 { public static void main(String[] args) { System.out.println(" S M T W T F S"); int days = 30; //←★入力項目:何日までのカレンダーにするか指定 int week = 6; //←★入力項目:1日の曜日を指定。日曜なら0、月曜なら1、... int k; //スペースのカウント用変数 for (k = 0 ; k < week ; k++) { //1日の曜日までスペースを空ける System.out.print(" "); } for (int j = 0 ; j < days ; j++) { if (j < 9) { System.out.print(" "); } System.out.print((j + 1) + " "); if ((k+j)%7 == 6) { //1日までのスペースにより改行する数字が異なってくるのでk+jで判定 System.out.print("\n"); } } } }
■Les015.java■
//配列も使用 //カレンダーもどき4。3の「日にち」指定を「月」指定に変更。(2月は強制的に28日まで。) public class Les015 { public static void main(String[] args) { int month = 12; //←★入力項目:何月のカレンダーにするか指定 int[] days = new int[] {31,28,31,30,31,30,31,31,30,31,30,31}; System.out.println(" ::" + month + "月::"); System.out.println(" S M T W T F S"); int week = 6; //←★入力項目:1日が日曜なら0、月曜なら1、...6まで。 int k; //スペースのカウント用変数 for (k = 0 ; k < week ; k++) { //1日の曜日までスペースを空ける System.out.print(" "); } for (int j = 0 ; j < days[month-1] ; j++) { if (j < 9) { System.out.print(" "); } System.out.print((j + 1) + " "); if ((k+j)%7 == 6) { //1日までのスペースにより改行する数字が異なってくるのでk+jで判定 System.out.print("\n"); } } } }
■Les016.java■
//カレンダーもどき5。1年分表示。指定するのは「年」と「1月1日の曜日」 public class Les016 { public static void main(String[] args) { int jahr = 2008; //←★入力項目:何年にするか指定 int woche = 2; //←★入力項目:1月1日が日曜なら0、月曜なら1、...6まで。 int[] days = new int[] {31,28,31,30,31,30,31,31,30,31,30,31}; if (((jahr%4)==0 && (jahr%100)!=0) || (jahr%400)==0) { //うるう年判定 days[1] = 29; //うるう年なら28から29へ書換 } System.out.println("■■■" + jahr + "年■■■"); for (int monat = 0 ; monat < 12 ; monat++) { System.out.println(" ::" + (monat+1) + "月::"); System.out.println(" S M T W T F S"); int k; //スペースのカウント用変数 int j; for (k = 0 ; k < woche ; k++) { //1日の曜日までスペースを空ける System.out.print(" "); } for (j = 0 ; j < days[monat] ; j++) { if (j < 9) { System.out.print(" "); } System.out.print((j + 1) + " "); if ((k+j)%7 == 6) { //1日までのスペースにより改行する数字が異なってくるのでk+jで判定 System.out.print("\n"); } } woche = (j+woche)%7; //次月の曜日取得 System.out.print("\n\n"); //改行して次月の出力に備える } } }
■Les017.java■
//カレンダー。ソース内の指定をなくした。プロンプトで「年」を入れる。 public class Les017 { public static void main(String[] args) { /*追加↓*/ final int jahr = Integer.parseInt(args[0]); //プロンプトに入力した年を読込む int day = 1; //曜日測定用のフラグ 西暦1年1月1日は月曜なので「1」 for(int i=1;i
■Les018.java■
//●クラス1a 定期券表示 インスタンスの生成 public class Les018 { public static void main(String[] args) { Teiki teiki = new Teiki(); //Teikiクラスのインスタンスの生成(Teiki型の宣言と先頭アドレス代入) System.out.println(teiki.tetudo); System.out.println(teiki.hakkou + "駅発行"); System.out.println(teiki.syubetu + "か月定期"); System.out.println(teiki.kukan + " で有効"); System.out.println("金額: \\" + teiki.kingaku); System.out.println("氏名: " + teiki.name); } } class Teiki { //オブジェクトとして考えたTeikiをクラスとしてここに記述 String tetudo = "県立電鉄"; String kukan = "三ノ宮−兵庫神戸"; String hakkou = "神戸"; String name = "★koyuki★"; int syubetu = 3; int kingaku = 50000; }
■Les019.java■
//●クラス1b 定期券表示 インスタンスの生成 public class Les019 { public static void main(String[] args) { Teiki teiki = new Teiki(); //Teikiクラスのインスタンスの生成(Teiki型の参照変数宣言と、新たなインスタンス生成・その先頭アドレスを参照変数に代入) System.out.println(" ________________________________"); System.out.println("| \t\t\t\t |"); System.out.println("| \t " + teiki.tetudo + " \t \t |"); System.out.println("| " + teiki.syubetu + "か月定期 \t\t\t |"); for (int i = 0 ; i < 2 ; i++) { if (i==0) { System.out.print("| "); } else if (i==1) { System.out.print(" ←→ "); teiki.eki = "電鉄 兵庫神戸"; //着駅 } System.out.print(teiki.eki); } System.out.println(" \t |"); teiki.eki = "神戸" ; //発行駅 System.out.println("| 平成 " + teiki.y + " 年 " + teiki.m + " 月 " + teiki.d + " 日 まで \t |"); System.out.println("| \t\t\t\t |"); System.out.println("| 金額: \\" + teiki.kingaku + " \t \t |"); System.out.println("| 氏名: " + teiki.name + " \t \t |"); System.out.println("| \t\t " + teiki.eki + "駅発行 |"); System.out.println("|________________________________|"); } } class Teiki { //オブジェクトとして考えたTeikiをクラスとしてここに記述 String tetudo = "県立電鉄"; //←クラスの属性↓ String eki = "三ノ宮"; String name = "★koyuki★"; int syubetu = 3; int y = 20; int m = 2; int d = 5; int kingaku = 50000; }
■Les020.java■
//●クラス2a インスタンス生成 public class Les020 { public static void main(String[] args) { Cake ichigo = new Cake(); ichigo.name = "イチゴケーキ"; ichigo.nedan = 380; System.out.println("名前:" + ichigo.name + "\n値段:" + ichigo.nedan); } } class Cake { String name; int nedan; }
■Les021.java■
//●クラス2b 複数のインスタンス生成 public class Les021 { public static void main(String[] args) { // Cake cake = new Cake(); //クラスの新たなインスタンス生成とその先頭アドレスを参照変数に代入 Cake ichigo = new Cake(); //Cakeクラスのインスタンス生成と参照変数の宣言と代入 Cake meron = new Cake(); //Cakeクラスのインスタンス生成と参照変数の宣言と代入 Cake choco = new Cake(); //Cakeクラスのインスタンス生成と参照変数の宣言と代入 /* Cake choco; choco = new Cake(); と記述しても同じ。参照変数への代入が不要な場合などがある */ ichigo.name = "イチゴケーキ"; ichigo.kakaku = 380; meron.name = "メロンケーキ"; meron.kakaku = 400; choco.name = "チョコケーキ"; choco.kakaku = 200; // System.out.println("名前は" + cake.name + "、価格は" + cake.kakaku + "円です。"); System.out.println("名前は" + ichigo.name + "、価格は" + ichigo.kakaku + "円です。"); System.out.println("名前は" + meron.name + "、価格は" + meron.kakaku + "円です。"); System.out.println("名前は" + choco.name + "、価格は" + choco.kakaku + "円です。"); } } class Cake { //オブジェクトをクラスとしてここに記述 // String name = "イチゴケーキ";//クラスの属性 // int kakaku = 380; //クラスの属性 String name; //クラスの属性 int kakaku; //クラスの属性 }
■Les022.java■
//●クラス3 インスタンス変数、インスタンスメソッド public class Les022 { public static void main(String[] args) { //これもインスタンスメソッド:main()メソッド本体 Yagi siroyagi = new Yagi(); //参照変数 Yagi kuroyagi = new Yagi(); //参照変数 siroyagi.name = "白ヤギ"; siroyagi.nakigoe = "めぇめぇ"; siroyagi.age = 9; System.out.println("名前は" + siroyagi.name + "、年齢は" + siroyagi.age + "才です。"); siroyagi.naku(); kuroyagi.name = "黒ヤギ"; kuroyagi.nakigoe = "べぇべぇ"; kuroyagi.age = 12; System.out.println("名前は" + kuroyagi.name + "、年齢は" + kuroyagi.age + "才です。"); kuroyagi.naku(); } } class Yagi { String name; //クラスの属性 インスタンス変数 String nakigoe; //クラスの属性 インスタンス変数 int age; //クラスの属性 インスタンス変数 void naku() { //インスタンス・メソッド(行動) System.out.println(nakigoe); } }
■Les023.java■
//●クラス4 インスタンス変数、インスタンスメソッドで計算 public class Les023 { public static void main(String[] args) { Tashizan tz = new Tashizan(); //参照変数 System.out.print(tz.num1 + "+"); System.out.print(tz.num2 + "="); tz.tasu(); // System.out.print(tz.num3);//V:クラスに出力のメソッドを作らなかった場合 } } class Tashizan { int num1 = 1; //クラスの属性 インスタンス変数 int num2 = 2; //クラスの属性 インスタンス変数 int num3; //U、V:クラスの属性 インスタンス変数 // int num3 = num1 + num2; //I:これだとメソッドを使っていない void tasu() { //インスタンス・メソッド(行動) num3 = num1 + num2; //U、V:ここでは変数の宣言ができない(●5参照) System.out.print(num3); //T、U } }
■Les024java■
//●クラス5 4から変更 初期化をクラス外で行う public class Les024 { public static void main(String[] args) { Tashizan tz = new Tashizan(); //tzは参照変数 Tashizan型の変数tzの宣言と初期化 代入されるのは、新たに生成されたインスタンスの先頭アドレス tz.num1 = 1; //[参照変数].[変数名] その先頭アドレスから辿れる変数num1へ1を代入 tz.num2 = 2; System.out.print(tz.num1 + "+"); System.out.print(tz.num2 + "="); tz.tasu(); //[参照変数].[メソッド名] 先頭アドレスから辿れるメソッドtasu()の呼出 } } class Tashizan { int num1; //クラスの属性 インスタンス変数 int num2; //クラスの属性 インスタンス変数 int num3; //U、V:クラスの属性 インスタンス変数 void tasu() { //インスタンス・メソッド(行動) num3 = num1 + num2; //U、V:ここ(メソッド内)で変数を宣言すると、インスタンス変数と種類が異なり、ローカル変数になる System.out.println(num3); //T、U num3 = (int)(num1 + 1.5); //キャスト:int型にする(切捨) System.out.println(num3); //T、U } }
■Les025.java■
//●クラス6 引数、メソッドのシグネチャ(引数の並び) public class Les025 { public static void main(String[] args) { Cake ichigo = new Cake(); //参照変数 Cake meron = new Cake(); //参照変数 // ichigo.name = "イチゴケーキ"; // ichigo.kakaku = 380; ichigo.nefuda("イチゴケーキ", 380); //渡し手(実引数)・受け手(仮引数)でメソッドのシグネチャ(引数の並び)を合わせなければならない meron.nefuda("メロンケーキ", 400); Goukei goukei = new Goukei(); goukei.tasu(ichigo.kakaku,meron.kakaku);//変数にすると良い } } class Cake { String name; //インスタンス変数 int kakaku; //インスタンス変数 void nefuda(String n, int k) { //インスタンス・メソッド(行動) name = n; //nとkはローカル変数 kakaku = k; System.out.println("名前:" + name + " 値段:" + kakaku); } }
■Les026.java■
//●クラス7 オーバーロード(多重定義):同名のメソッドを複数存在させることが可能(シグネチャ:引数の並び(型も)で区別可能) public class Les026 { public static void main(String[] args) { Car tyt = new Car(); tyt.name = "TOYOTA"; tyt.num = "A1234"; tyt.gus = 15.5; // tyt.showData(tyt.num , tyt.name , tyt.gus); tyt.showData(tyt.name , tyt.num , tyt.gus); //↑numとnameを逆にするとクラスのインスタンス変数が逆に書き換えられ、以後にも影響する。 tyt.showData(tyt.name , tyt.num); tyt.showData(tyt.name); //メソッド名が同じでも異なるシグネチャなら可 } } class Car { String name; String num; double gus; String dam; /* void showData(String i) { dam = i; System.out.println("名前:" + name); }*/ void showData(String n) { //iを使うと同じ型のシグネチャになるため、このメソッドがエラーになる name = n; System.out.println("名前:" + name); } void showData(String na, String nu) { name = na; num = nu; System.out.println("名前:" + name + " ナンバ:" + num); } void showData(String na3, String nu3, double gu) { name = na3; num = nu3; gus = gu; System.out.println("名前:" + name + " ナンバ:" + num + " ガソリン量:" + gus + "L"); } }
■Les027.java■
//●クラス8 参照渡しと値渡し public class Les027 { public static void main(String[] args) { Tokei watch = new Tokei(); //インスタンス生成(必要領域の確保)→型毎に確保 Tokei clock = new Tokei(); //インスタンス生成(必要領域の確保)→型毎に確保 watch.tname = "腕時計"; clock.tname = "置時計"; watch.tmaker = "ROLEX"; clock.tmaker = "Tiffany"; watch.tkingaku = 100000; clock.tkingaku = 200000; watch.tout(/*watch.tname, watch.tmaker, watch.tkingaku*/);//ここでwatch.tname等を渡さなくても上の代入で渡っている clock.tout(/*clock.tname, clock.tmaker, clock.tkingaku*/); Ttotal tkei = new Ttotal(); // tkei.tsogokei(watch.tkingaku, clock.tkingaku); //値渡し:値で渡す(変数や数値・文字列を引数として直に渡している) tkei.tsogokei(watch, clock); //参照渡し:参照変数(先頭アドレス)を引数として渡す } } class Tokei { String tname; String tmaker; int tkingaku; void tout(/*String tnam, String tmak, int tkin*/) { /* tname = tnam; tmaker = tmak; tkingaku = tkin; */ System.out.println("商品名:" + tname + " メーカー名:" + tmaker + "\t金額:\\" + tkingaku); } } class Ttotal { Tokei watch; Tokei clock; // int tgokei; // int watch = watch.tkingaku; // int clock = clock.tkingaku; // void tsogokei(int tw, int tc) { void tsogokei(Tokei tw, Tokei tc) { watch = tw; clock = tc; int tgokei = watch.tkingaku + clock.tkingaku; System.out.println("合計金額:\\" + tgokei); } }
■Les028.java■
//●クラス9 戻り値:ゲッターメソッド public class Les028 { public static void main(String[] args) { Car car1 = new Car(); Car car2 = new Car(); // String na = car1.showName(); // System.out.println("名前は" + na); System.out.println("名前は" + car1.showName()); int nu = car1.showNum(); System.out.println("ナンバーは" + nu); } } class Car { //オブジェクトとして考えたTeikiをクラスとしてここに記述 String name = "MiniCar"; int num = 1234; String showName() { // voidは「〜ない」ということ→String等の型がない場合 return name; } int showNum() { return num; } }
■Les029.java■
//★復習1 「3+2=5」を表示:ただの文字列表示 public class Les029 { public static void main(String[] args) { System.out.println("3+2=5"); } }
■Les030.java■
//★復習2 「3+2=5」を表示:ローカル変数を使って public class Les030 { public static void main(String[] args) { int a = 3; int b = 2; System.out.println(a + "+" + b + "=" + ( a + b )); } }
■Les031.java■
//★復習3 「3+2=5」を表示:インスタンス変数を設定・メソッドを使わない(メソッドはmain()のみ) public class Les031 { public static void main(String[] args) { Tasu kasan = new Tasu(); // kasan.a =3; // kasan.b =2; System.out.println("3+2=" + ( kasan.a + kasan.b ) ); } } class Tasu { int a = 3; //main()メソッドで初期化するように int b = 2; }
■Les032.java■
//★復習4 「3+2=5」を表示:インスタンス変数を設定・メソッドを使う・値渡し public class Les032 { public static void main(String[] args) { Tasu kasan = new Tasu(); // kasan.a = 3; // kasan.b = 2; kasan.tasizan(3, 2); } } class Tasu { int a; int b; int gokei; void tasizan(int keia, int keib) { a = keia; b = keib; gokei = a + b; System.out.println(a + "+" + b + "=" + gokei); } }
■Les033.java■
//★復習5 「3+2=5」を表示:クラスを2つ使って・引数を渡さない方法 public class Les033 { public static void main(String[] args) { // Tasu kasan = new Tasu(); Syuturyoku out = new Syuturyoku(); // kasan.tasizan(); out.output(); //Tasuクラス内の変数からSyuturyokuクラス内の変数に代入する方法(数クラスと足算クラス:★復習6)でも可能(てか授業はまだそのレベルだったらしい…) } } class Tasu { int a = 3; int b = 2; int gokei; void tasizan() { gokei = a + b; } } class Syuturyoku { Tasu kasan = new Tasu(); void output() { kasan.tasizan(); System.out.println(kasan.a + "+" + kasan.b + "=" + kasan.gokei); } }
■Les034.java■
//★復習6 「3+2=5」を表示:クラスを2つ使って・引数を渡す(値渡し) public class Les034 { public static void main(String[] args) { Kazu kazu = new Kazu(); Syuturyoku out = new Syuturyoku(); out.tasizan(kazu.a, kazu.b); //実引数 値渡し } } class Kazu { int a = 3; int b = 2; } class Syuturyoku { int gokei; void tasizan(int keia ,int keib) { gokei = keia + keib; System.out.println(keia + "+" + keib + "=" + gokei); } }
■Les035.java■
//★復習7 「3+2=5」を表示:クラスを2つ使って・引数を渡す(参照渡し) public class Les035 { public static void main(String[] args) { Kazu kazu = new Kazu(); Syuturyoku out = new Syuturyoku(); out.tasizan(kazu); //実引数 参照渡し } } class Kazu { int a = 3; int b = 2; } class Syuturyoku { int gokei; void tasizan(Kazu suu) { //仮引数 gokei = suu.a + suu.b; System.out.println(suu.a + "+" + suu.b + "=" + gokei); } }
■Les036.java■
//★復習8 「3+2=5」を表示:クラスを2つ使って・引数を渡す・セッターメソッドで public class Les036 { public static void main(String[] args) { Syuturyoku out = new Syuturyoku(); int seta = 3; int setb = 2; out.setData(seta, setb); //実引数 setData()というセッターメソッド呼出 out.show(); int geta = out.getData1(); //ゲッターメソッド呼出 System.out.println("戻り値aは" + geta); // System.out.println("戻り値aは" + out.getData()); int getb = out.getData2(); //ゲッターメソッド呼出 System.out.println("戻り値bは" + getb); String getc = out.getData3(); //ゲッターメソッド呼出 System.out.println("戻り値cは" + getc); /* String getc = out.getData1(); //ゲッターメソッド呼出 System.out.println("戻り値cは" + getc); } } class Syuturyoku { int a; int b; String c = "C"; // int gokei; void setData(int n, int m) { //仮引数 セッターメソッド本体 a = n; b = m; int gokei = a + b; // gokei = n + m; System.out.println(a + "+" + b + "=" + gokei); // System.out.println(n + "+" + m + "=" + gokei); } void show() { //setdataメソッド終了後もインスタンス変数が生きているか確認してみる System.out.println("aは" + a + " bは" + b); } int getData1() { //ゲッターメソッド return a; } int getData2() { //ゲッターメソッド return b; } String getData3() { //ゲッターメソッド return c; } /* String getData1() { //型を変えても同名のゲッターメソッドは使えない→セッターメソッドより制約される return c; } */ }
■Les037.java■
//★余力の復習課題 public class Les037 { public static void main(String[] args) { Gakki flute = new Gakki(); Gakki genbass = new Gakki(); Gakki bone = new Gakki(); Gokei sum = new Gokei(); String setfo = "koyuki"; //ローカル変数 String setgo = "kotori"; //ローカル変数 String setbo = "kokoro"; //ローカル変数 String setfn = "フルート"; //ローカル変数 String setgn = "弦バス"; //ローカル変数 String setbn = "ボーン"; //ローカル変数 int setfkin = 300000; //ローカル変数 int setgkin = 400000; //ローカル変数 int setbkin = 500000; //ローカル変数 flute.setData(setfo, setfn, setfkin); //セッターメソッド呼出 値渡し genbass.setData(setgo, setgn, setgkin); //セッターメソッド呼出 値渡し bone.setData(setbo, setbn, setbkin); //セッターメソッド呼出 値渡し sum.total(flute, genbass, bone); //セッターメソッド呼出 参照渡し int sogokei = sum.getData(); //ゲッターメソッド呼出 System.out.println("合計金額:\t\t\\" + sogokei); } } class Gakki { String gowner; String gname; int gkingaku; // int gokei; void setData(String ow, String na, int kin) { gowner = ow; gname = na; gkingaku = kin; // gokei = gokei + kin; //flute.gkingakuなどになるのでこれだとダメ System.out.println(gowner + "の" + gname + "は、\t\\" + gkingaku); } } class Gokei{ // Gakki fl; // Gakki ge; // Gakki bo; int gokei; void total(Gakki f, Gakki g, Gakki b) { // fl = f; // ge = f; // bo = b; // gokei = fl.gkingaku + ge.gkingaku + bo.gkingaku; gokei = f.gkingaku + g.gkingaku + b.gkingaku; // System.out.println("合計金額:\t\t\\" + gokei); } int getData() { //ゲッターメソッドも使ってみる return gokei; } }
■Les038.java■
//コンストラクタ public class Les038 { public static void main(String[] args) { Car car1 = new Car(); //デフォルトコンストラクタの呼出 コンストラクタを記述した場合はシグネチャ(引数の型)がを省略できない Car car2 = new Car(1234, 50.5); //コンストラクタの呼出 ()が付いているのはメソッド シグネチャ(引数の型)が等しくなければダメ Car car3 = new Car("MiniCar", 1234 ,1.2); //コンストラクタの呼出 ()が付いているのはメソッド シグネチャ(引数の型)が等しくなければダメ // Car[型] car[参照変数] = new [コンストラクタ] // 戻り値が先頭アドレス→Car()は特殊なメソッド:コンストラクタ // @Car型の変数carの宣言 Anew Car()コンストラクタ呼出 BCarクラスのインスタンス生成 // C3で生成されたインスタンスの先頭アドレスを参照変数carに代入 car1.show(); //show()というセッターメソッド呼出 car2.show(); //show()というセッターメソッド呼出 car3.showData(); //show()というセッターメソッド呼出 // int getsum = set.getData(); //ゲッターメソッド呼出 // System.out.println("戻り値sumは" + getsum); } } class Car { String name; int num = 4321; double gus = 1.1; Car() { //引数のないコンストラクタ:デフォルトコンストラクタ } /*Car*/ Car(int n1, double g1) { //Car型しかないのでvoid等の記述不要・Carも省略可 これはコンストラクタ本体 // num = 4321; //コンストラクタ呼出で、まず処理されるので上の初期化から書換えられる // gus = 2.1; num = n1; gus = g1; //仮引数で受けたものも処理される } Car(String na3, int n3, double g3) { //引数のないコンストラクタ:デフォルトコンストラクタ name = na3; num = n3; gus = g3; } void show() { //()の中身:仮引数 戻り値がないときvoid System.out.println("ナンバは" + num + " ガソリン量は" + gus + "L"); } void showData() { //()の中身:仮引数 戻り値がないときvoid System.out.println("名前は" + name + " ナンバは" + num + " ガソリン量は" + gus + "L"); } // int getData() { //ゲッターメソッド // sum = a + b; // return sum; // } }
■Les039.java■
//算数・国語の合計と平均を出す(ついでに評価も) public class Les039 { public static void main(String[] args) { Seiseki math = new Seiseki(); Seiseki koku = new Seiseki(); Seiseki dave = new Seiseki(); Shyouka kekka = new Shyouka() ; // Output out = new Output(); Stotal total = new Stotal(); Save ave = new Save(); math.sname = "算数"; math.stensuu = 95; koku.sname = "国語"; koku.stensuu = 60; // math.hyouka(math.sname, math.stensuu); // koku.hyouka(koku.sname, koku.stensuu); kekka.hyouka(math); kekka.hyouka(koku); total.stotal(math, koku); ave.save(math, koku); dave.setAveten(ave.sname, ave.stensuu); kekka.hyouka(dave); // out.sout(math, koku); } } class Seiseki { String sname; int stensuu; void setAveten(String an, int at) { sname = an; stensuu = at; } } class Shyouka { String skekka; Seiseki kamoku; void hyouka(Seiseki ka) { kamoku = ka; if (kamoku.stensuu >= 90) { skekka = "優"; } else if (kamoku.stensuu >= 70) { skekka = "可"; } else { skekka = "不可"; } System.out.println(kamoku.sname + "の点数は" + kamoku.stensuu + "点で結果は" + skekka); } } class Stotal { String sname = "合計"; int stensuu; Seiseki math; Seiseki koku; void stotal(Seiseki tm, Seiseki tk) { math = tm; koku = tk; stensuu = math.stensuu + koku.stensuu; System.out.println(math.sname + "と" + koku.sname + "の合計は" + stensuu + "点"); } } class Save { String sname = "平均"; int stensuu; Seiseki math; Seiseki koku; void save(Seiseki am, Seiseki ak) { math = am; koku = ak; stensuu = (math.stensuu + koku.stensuu) / 2; System.out.println(math.sname + "と" + koku.sname + "の平均は" + stensuu + "点"); } } /* class Output { Seiseki math; Seiseki koku; void sout(Seiseki sm, Seiseki sk) { math = sm; koku = sk; System.out.println(math.sname + "の結果は" + math.skekka + "、" + koku.sname + "の結果は" + koku.skekka); } } */
■Les040.java■
//Les039をちょこっといじって public class Les040 { public static void main(String[] args) { Seiseki math = new Seiseki(); Seiseki koku = new Seiseki(); Seiseki dave = new Seiseki(); Shyouka kekka = new Shyouka() ; // Output out = new Output(); Stotal total = new Stotal(); // Save ave = new Save(); math.sname = "算数"; math.stensuu = 95; koku.sname = "国語"; koku.stensuu = 60; // math.hyouka(math.sname, math.stensuu); // koku.hyouka(koku.sname, koku.stensuu); kekka.hyouka(math); kekka.hyouka(koku); total.stotal(math, koku); total.out(); // out.sout(math, koku); // ave.save(math, koku); // out.sout(math, koku); dave.setAveten(total.sname, total.stensuu); kekka.hyouka(dave); } } class Seiseki { String sname; int stensuu; void setAveten(String an, int at) { sname = an; stensuu = at; } } class Shyouka { String skekka; Seiseki kamoku; void hyouka(Seiseki ka) { kamoku = ka; if (kamoku.stensuu >= 90) { skekka = "優"; } else if (kamoku.stensuu >= 70) { skekka = "可"; } else { skekka = "不可"; } System.out.println(kamoku.sname + "の点数は" + kamoku.stensuu + "点で結果は" + skekka); } } class Stotal { String tname = "合計"; String sname = "平均"; int ttensuu; int stensuu; Seiseki math; Seiseki koku; void stotal(Seiseki tm, Seiseki tk) { math = tm; koku = tk; ttensuu = math.stensuu + koku.stensuu; stensuu = (math.stensuu + koku.stensuu) / 2; } void out() { System.out.println(math.sname + "と" + koku.sname + "の" + tname + "は" + ttensuu + "点"); System.out.println(math.sname + "と" + koku.sname + "の" + sname + "は" + stensuu + "点"); } } /* class Save { String sname = "平均"; int stensuu; Seiseki math; Seiseki koku; void save(Seiseki am, Seiseki ak) { math = am; koku = ak; stensuu = (math.stensuu + koku.stensuu) / 2; System.out.println(math.sname + "と" + koku.sname + "の" + sname + "は" + stensuu + "点"); } } */ /* class Output { Seiseki math; Seiseki koku; void sout(Seiseki m, Seiseki k) { math = m; koku = k; System.out.println(math.sname + "と" + koku.sname + "の" + sname + "は" + stensuu + "点"); } } */ /* class Output { Seiseki math; Seiseki koku; void sout(Seiseki sm, Seiseki sk) { math = sm; koku = sk; System.out.println(math.sname + "の結果は" + math.skekka + "、" + koku.sname + "の結果は" + koku.skekka); } } */
■Les041.java■
//クラス変数・クラスメソッド Les040をさらに2人分に変更(Les040のmain()をsub()にした) public class Les041 { public static void main(String[] args) { /* ina.mten = 99; ina.kten = 11; ino.mten = 95; ino.kten = 85; ina.simei = "稲坂さくら"; ino.simei = "井上はなこ"; */ Sub ina = new Sub("稲坂さくら" , 99 , 10); ina.simei(); //クラス変数を使っているインスタンスメソッドの呼出 ina.sub(); Sub ino = new Sub("井上はなこ" , 95 , 85); ino.simei(); //クラス変数を使っているインスタンスメソッドの呼出 ino.sub(); Sub.average(); //クラスメソッドの呼出 } } class Sub { String simei; int mten; //インスタンス変数 int kten; //インスタンス変数 static int ninzuu; //クラス変数 staticを追加することで「ninzuu = ninzuu + 1;」が継承される。インスタンス変数とは異なる。 static int mtensuu; //クラス変数 static int ktensuu; //クラス変数 Sub(String si, int mt, int kt) { simei = si; mten = mt; kten = kt; ninzuu = ninzuu + 1; //クラス変数で処理 mtensuu = mtensuu + mten; //クラス変数で処理 ktensuu = ktensuu + kten; //クラス変数で処理 } void simei() { System.out.println(ninzuu + "人目"); //クラス変数の出力 System.out.println("●氏名:" + simei + "●"); } Seiseki math; //インスタンス変数にしてみてもstatic void average()でmath.snameは使えないらしい Seiseki koku; //インスタンス変数にしてみてもstatic void average()でkoku.snameは使えないらしい void sub() { /*Seiseki*/ math = new Seiseki(); /*Seiseki*/ koku = new Seiseki(); Seiseki dave = new Seiseki(); Shyouka kekka = new Shyouka() ; // Output out = new Output(); Stotal total = new Stotal(); // Save ave = new Save(); math.sname = "算数"; math.stensuu = mten; koku.sname = "国語"; koku.stensuu = kten; // math.hyouka(math.sname, math.stensuu); // koku.hyouka(koku.sname, koku.stensuu); kekka.hyouka(math); kekka.hyouka(koku); total.stotal(math, koku); total.out(); // out.sout(math, koku); // ave.save(math, koku); // out.sout(math, koku); dave.setAveten(total.sname, total.stensuu); kekka.hyouka(dave); } static void average() { //クラスメソッド mtensuu = (int) (mtensuu / ninzuu); //キャスト:int型にする(切捨) ktensuu = (int) (ktensuu / ninzuu); //キャスト:int型にする(切捨) System.out.println("--------------------------"); System.out.println(ninzuu + "人の算数の平均は" + mtensuu + "点"); System.out.println(ninzuu + "人の国語の平均は" + ktensuu + "点"); } } class Seiseki { String sname; int stensuu; void setAveten(String an, int at) { sname = an; stensuu = at; } } class Shyouka { String skekka; Seiseki kamoku; void hyouka(Seiseki ka) { kamoku = ka; if (kamoku.stensuu >= 90) { skekka = "優"; } else if (kamoku.stensuu >= 70) { skekka = "可"; } else { skekka = "不可"; } System.out.println(kamoku.sname + "の点数は" + kamoku.stensuu + "点で結果は" + skekka); } } class Stotal { String tname = "合計"; String sname = "平均"; int ttensuu; int stensuu; Seiseki math; Seiseki koku; void stotal(Seiseki tm, Seiseki tk) { math = tm; koku = tk; ttensuu = math.stensuu + koku.stensuu; stensuu = (int)(math.stensuu + koku.stensuu) / 2; //キャスト:int型にする(切捨) } void out() { System.out.println(math.sname + "と" + koku.sname + "の" + tname + "は" + ttensuu + "点"); System.out.println(math.sname + "と" + koku.sname + "の" + sname + "は" + stensuu + "点"); } }
■Les042.java■
//クラス変数・クラスメソッド public class Les042 { public static void main(String[] args) { Car car1 = new Car("ACar", 12); // car1.name = "ACar"; // car1.num = 12; car1.showData(); //セッターメソッド呼出 Car car2 = new Car("BCar", 23); car2.showData(); //セッターメソッド呼出 Car car3 = new Car("CCar", 34); car3.showData(); //セッターメソッド呼出 Car.showSum(); //クラスメソッド呼出 //★2からしてCarそのものがアドレスに相当? System.out.println(car1 + "," + car2 + "," + car3); //★1 Car@〜というアドレスが入っている } } class Car { String name; //インスタンス変数 int num; //インスタンス変数 static int sum; //クラス変数 staticを追加することでsum=sum+1;が継承される。インスタンス変数とは異なる。 Car(String na, int nu) { name = na; num = nu; sum = sum + 1; System.out.println(sum + "台目製作しました。"); } void showData() { //インスタンスメソッド System.out.println("車名は" + name + " ナンバーは" + num); // System.out.println("車を1台製作しました。"); System.out.println(" "); } static void showSum() { //クラスメソッド System.out.println("車は全部で" + sum + "台製作しました。"); //クラス変数を扱うメソッドはクラスメソッドに統一しておくと良い // System.out.println(Car); //★2 これはエラーになります。car1等の@より前に相当? } }
■Les043.java■
//クラス変数・クラスメソッド public class Les043 { // static int a = 2; //●1クラス変数 int a = 2; //●2 インスタンス変数 public static void main(String[] args) { //メインメソッド クラスメソッド int n = 5; System.out.println(n); // System.out.println(a); //●1 この記述で処理するならクラス変数にする Les043 Les0 = new Les043(); //●2 インスタンス変数を出力するならインスタンスの生成要 System.out.println(Les0.a); } // int a = 2; //●2 インスタンス変数 ここに記述しても結果は同じ }
■Les044.java■
//publicとprivate(詳しい説明はもっと先で習います) public class Les044 { public static void main(String[] args) { //メインメソッド クラスメソッド Car car = new Car(); // car.name = "MiniCar"; //privateで宣言していると代入不可、publicなら可能 car.showNum(1234); //引数でpublicのメソッドに渡せばprivateの変数でも書換可能 car.showGus(-10.2); } } class Car { // public String name; private String name; //privateだと他のクラスからはアクセスできない private int num; private double gus; public void showNum(int nu) { //「public void」と「static void」(クラスメソッド)は別分類 num = nu; System.out.println("ナンバは" + num); } public void showGus(double gu) { gus = gu; if(gus>=0) { System.out.println("ガソリン量は" + gus + "L"); } else { System.out.println("正しいガソリン量を入力してください!"); } } }
■Les045.java■
//配列 public class Les045 { public static void main(String[] args) { // int num = 2; //int型変数 // String neme = ""; //String型変数 // Car car1 = new Car(); //参照変数 int[] kazu = new int[4]; //配列 型[] 変数名 = new 型[要素数] // int kazu[] = new int[4]; //この記述でも同じ kazu[0] = 1; //配列は0番目から始まる kazu[1] = 3; kazu[2] = 5; kazu[3] = 7; // int[] num = {3,7,9}; //これでも同じ 宣言と代入が同時 System.out.println(kazu[0] + "," + kazu[1] + "," + kazu[2] + "," + kazu[3]); System.out.println("int型変数kazu:" + kazu.length + "個"); //配列の個数(要素数)の出力 lengthは要素数を持つ変数 kazuという変数が持っている要素数がlengthに入っている kazuは参照変数 double[] s = new double[4]; s[0] = 1.1; s[1] = 3.1; s[2] = 5.1; s[3] = 7.1; System.out.println(s[0] + "," + s[1] + "," + s[2] + "," + s[3]); System.out.println("double型変数s:" + s.length + "個"); String[] moji = new String[4]; moji[0] = "いろは"; moji[1] = "アイウエオ"; moji[2] = "あきすてね"; moji[3] = "ABCD"; System.out.println(moji[0] + "、" + moji[1] + "、" + moji[2] + "、" + moji[3]); System.out.println("String型変数moji:" + moji.length + "個"); } }
■Les046.java■
//配列 for構文を使って表示 public class Les046 { public static void main(String[] args) { int[] num = new int[3]; //配列 型[] 変数名 = new 型[要素数] num[0] = 3; num[1] = 7; num[2] = 9; for(int i = 0; i < num.length ; i++) { //num.lengthで要素数がわかるので利用 System.out.println(num[i]); } } }
■Les047.java■
//配列 参照変数の場合 public class Les047 { public static void main(String[] args) { Car[] car = new Car[3]; //配列 型[] 変数名 = new 型[要素数] car[0] = new Car("MiniCar", 12); car[1] = new Car("MiddleCar", 34); car[2] = new Car("BigCar", 56); } } class Car { String name; int haiki; Car(String n, int h) { name = n; haiki = h; System.out.println(name + haiki); } }
■Les048.java■
//配列 参照変数の場合2 public class Les048 { public static void main(String[] args) { Person[] ten = new Person[2]; //配列 型[] 変数名 = new 型[要素数] ten[0] = new Person("A美", 5, 3); ten[1] = new Person("B子", 8, 6); int skei = 0; int kkei = 0; double save; double kave; int n = 0; for(int i = 0; i < ten.length ; i++) { skei = skei + ten[i].sansuu; kkei = kkei + ten[i].kokugo; n++; } save = (double)skei / n; //double型にキャスト // save = (double)(skei / n); //この形だとダメ // save = skei; save = save / n; //これでもOK kave = (double)kkei / n; System.out.print("算数の合計:" + skei + "点、"); System.out.println("算数の平均:" + save + "点"); System.out.print("国語の合計:" + kkei + "点、"); System.out.println("国語の平均:" + kave + "点"); } } class Person { String name; int sansuu; int kokugo; int kei; double ave; Person(String n, int s, int k) { name = n; sansuu = s; kokugo = k; kei = sansuu + kokugo; kei = sansuu + kokugo; ave = kei; ave = ave / 2; System.out.println(name + "の算数:" + sansuu + "点、国語:" + kokugo + "点" + "、合計:" + kei + "点、平均:" + ave + "点"); } }
■Les049.java■
//配列+参照変数+for構文1 最後に残高を出す public class Les049 { public static void main(String[] args) { Person[] nyukin = new Person[2]; //配列 型[] 変数名 = new 型[要素数] nyukin[0] = new Person("A美", 1000, 5); //A子が1回目1000円・2回目2000円...と5回入金 nyukin[1] = new Person("B子", 100, 3); //B子が1回目100円・2回目200円...と3回入金 int bsum = 0; for(int i = 0; i < nyukin.length ; i++) { //1人目、2人目...の処理 int kin = 0; int sum = 0; for(int n = 0 ; n < nyukin[i].kaisuu ; n++) { //入金1回目、2回目...の処理 kin = nyukin[i].kingaku * (n+1); sum = sum + kin; //合計を出すなら System.out.println(nyukin[i].name + "の" + (n+1) + "回目の入金額:" + kin + "円です。"); } bsum = bsum + sum; } Bank zan = new Bank(bsum); } } class Person { String name; int kingaku; int kaisuu; Person(String n, int k, int i) { name = n; kingaku = k; kaisuu = i; } } class Bank { int sum; Bank(int s) { sum = s; System.out.println("銀行残高は" + sum + "円です。"); } }
■Les050.java■
//配列+参照変数+for構文2 都度残高を出す public class Les050 { public static void main(String[] args) { Person[] nyukin = new Person[2]; //配列 型[] 変数名 = new 型[要素数] nyukin[0] = new Person("A美", 1000, 5); //A子が1回目1000円・2回目2000円...と5回入金 nyukin[1] = new Person("B子", 100, 3); //B子が1回目100円・2回目200円...と3回入金 int bsum = 0; int sum = 0; for(int i = 0; i < nyukin.length ; i++) { //1人目、2人目...の処理 int kin = 0; for(int n = 0 ; n < nyukin[i].kaisuu ; n++) { //入金1回目、2回目...の処理 kin = nyukin[i].kingaku * (n+1); sum = sum + kin; //合計を出すなら System.out.println(nyukin[i].name + "の" + (n+1) + "回目の入金額:" + kin + "円です。"); System.out.println("銀行残高は" + sum + "円です。"); } } } } class Person { String name; int kingaku; int kaisuu; Person(String n, int k, int i) { name = n; kingaku = k; kaisuu = i; } }
■Les051.java■
//配列+参照変数+for構文3 Les050から変更:Bankクラスに分離 public class Les051 { public static void main(String[] args) { Person[] nyukin = new Person[2]; //配列 型[] 変数名 = new 型[要素数] nyukin[0] = new Person("A美", 1000, 5); //A子が1回目1000円・2回目2000円...と5回入金 nyukin[1] = new Person("B子", 100, 3); //B子が1回目100円・2回目200円...と3回入金 Bank bank= new Bank(nyukin[0], nyukin[1]); } } class Person { String name; int kingaku; int kaisuu; Person(String n, int k, int i) { name = n; kingaku = k; kaisuu = i; } } class Bank { Person[] nyukin = new Person[2]; Bank(Person n0, Person n1) { nyukin[0] = n0; nyukin[1] = n1; int bsum = 0; int sum = 0; for(int i = 0; i < nyukin.length ; i++) { //1人目、2人目...の処理 int kin = 0; for(int n = 0 ; n < nyukin[i].kaisuu ; n++) { //入金1回目、2回目...の処理 kin = nyukin[i].kingaku * (n+1); sum = sum + kin; //合計を出すなら System.out.println(nyukin[i].name + "の" + (n+1) + "回目の入金額:" + kin + "円です。"); System.out.println("銀行残高は" + sum + "円です。"); } } } }
■Les052.java■
//配列+参照変数+for構文4 Les051から名前表示を1回に変更 public class Les052 { public static void main(String[] args) { Person[] nyukin = new Person[2]; //配列 型[] 変数名 = new 型[要素数] nyukin[0] = new Person("A美", 1000, 5); //A子が1回目1000円・2回目2000円...と5回入金 nyukin[1] = new Person("B子", 100, 3); //B子が1回目100円・2回目200円...と3回入金 Bank bank= new Bank(nyukin[0], nyukin[1]); } } class Person { String name; int kingaku; int kaisuu; Person(String n, int k, int i) { name = n; kingaku = k; kaisuu = i; } } class Bank { Bank(Person p0, Person p1) { Person[] nyukin = new Person[2]; nyukin[0] = p0; nyukin[1] = p1; int sum = 0; for(int i = 0; i < nyukin.length ; i++) { //1人目、2人目...の処理 int kin = 0; System.out.println("■" + nyukin[i].name + "■ 入金がありました。"); for(int n = 0 ; n < nyukin[i].kaisuu ; n++) { //入金1回目、2回目...の処理 kin = nyukin[i].kingaku * (n+1); sum = sum + kin; //合計を出すなら System.out.println((n+1) + "回目の入金額:" + kin + "円、銀行残高は" + sum + "円です。"); } } } }
■Les053.java■
//配列+参照変数+for構文5 Les052から変更:計算処理を別メソッドに public class Les053 { public static void main(String[] args) { Bank bank= new Bank(); bank.keisan(); } } class Person { String name; int kingaku; int kaisuu; Person(String n, int k, int i) { name = n; kingaku = k; kaisuu = i; } } class Bank { Person[] nyukin = new Person[2]; //配列 型[] 変数名 = new 型[要素数] int sum = 0; Bank() { nyukin[0] = new Person("A美", 1000, 5); //A子が1回目1000円・2回目2000円...と5回入金 nyukin[1] = new Person("B子", 100, 3); //B子が1回目100円・2回目200円...と3回入金 } void keisan() { for(int i = 0; i < nyukin.length ; i++) { //1人目、2人目...の処理 int kin = 0; System.out.println("■" + nyukin[i].name + "■ 入金がありました。"); for(int n = 0 ; n < nyukin[i].kaisuu ; n++) { //入金1回目、2回目...の処理 kin = nyukin[i].kingaku * (n+1); sum = sum + kin; //合計を出すなら System.out.println((n+1) + "回目の入金額:" + kin + "円、銀行残高は" + sum + "円です。"); } } } }
■Les054.java■
//配列+参照変数+for構文6 Les053から変更:Bankクラスのインスタンス生成をfor構文内で行う public class Les054 { public static void main(String[] args) { Person[] nyukin = new Person[2]; //配列 型[] 変数名 = new 型[要素数] nyukin[0] = new Person("A美", 1000, 5); //A子が1回目1000円・2回目2000円...と5回入金 nyukin[1] = new Person("B子", 100, 3); //B子が1回目100円・2回目200円...と3回入金 for(int i = 0; i < nyukin.length ; i++) { //1人目、2人目...の処理 Bank bank= new Bank(nyukin[i]); System.out.println("■" + nyukin[i].name + "■ 入金がありました。"); bank.keisan(); } } } class Person { String name; int kingaku; int kaisuu; Person(String n, int k, int i) { name = n; kingaku = k; kaisuu = i; } } class Bank { Person nyukin; //インスタンスを新たに生成する必要はない static int sum = 0; Bank(Person p) { nyukin = p; } void keisan() { for(int n = 0 ; n < nyukin.kaisuu ; n++) { //入金1回目、2回目...の処理 int kin = nyukin.kingaku * (n+1); sum = sum + kin; //合計を出すなら System.out.println((n+1) + "回目の入金額:" + kin + "円、銀行残高は" + sum + "円です。"); } } }
■Les055.java■
//配列+参照変数+for構文7 Les053から変更:A美・B子交互に出力 public class Les055 { public static void main(String[] args) { Bank bank= new Bank(); bank.keisan(); } } class Person { String name; int kingaku; int kaisuu; Person(String n, int k, int i) { name = n; kingaku = k; kaisuu = i; } } class Bank { Person[] nyukin = new Person[2]; //配列 型[] 変数名 = new 型[要素数] int[] sum = new int[2]; int gsum = 0; Bank() { nyukin[0] = new Person("A美", 1000, 5); //A子が1回目1000円・2回目2000円...と5回入金 nyukin[1] = new Person("B子", 100, 3); //B子が1回目100円・2回目200円...と3回入金 } void keisan() { for(int n = 0 ; n < nyukin[0].kaisuu ; n++) { //入金1回目、2回目...の処理 for(int i = 0; i < nyukin.length ; i++) { //1人目、2人目...の処理 if(n >= nyukin[i].kaisuu) { continue; //以降のループ内処理を飛ばして次のループに移る。break;はループから抜ける。 } int kin = 0; kin = nyukin[i].kingaku * (n+1); sum[i] = sum[i] + kin; //個人合計 gsum = gsum + kin; //銀行合計 System.out.println(nyukin[i].name + "の口座に" + (n+1) + "回目の入金:" + kin + "円、" + nyukin[i].name + "の口座残高は" + sum[i] + "円です。"); } } System.out.println("銀行残高は" + gsum + "円です。"); } }
★入力ストリーム throws★
■Les056.java■
//filei.txtに書かれている文字(一文字目)のバイトデータを表示 import java.io.*; public class Les056 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる File file = new File("filei.txt"); FileInputStream fis = new FileInputStream(file); //ファイルからStreamで読み込むクラス。Streamではバイナリデータ(2進数)を扱う(半角1文字・全角では1/2文字分) int bytedata = fis.read(); //read()は一文字分しか読み込めない。戻り値のあるメソッド // while((bytedata = fis.read()) !=-1) { //読み込むデータが無くなると-1→データがなくなるまで処理を続ける System.out.print(bytedata); //filei.txtに書かれた文字をバイトデータで表したときの数値を出力 } }
■Les057.java■
//filei.txtに書かれている文字(一文字目)のunicodeを表示 import java.io.*; public class Les057 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる FileInputStream fis = new FileInputStream("filei.txt"); //file名・参照変数どちらも渡すことが可能。ファイルからStreamで読み込むクラス。Streamではバイナリデータ(2進数)を扱う(半角1文字・全角では1/2文字分) InputStreamReader isr = new InputStreamReader(fis); //バイナリデータで受け取って(file名を直接引数で渡せない)UNI-CODE表示(半角1文字・全角でも1文字分)で返す、テキストデータを扱う・文字列としては扱えない int data = isr.read(); //read()は一文字分しか読み込めない。戻り値のあるメソッド System.out.println(data); } }
■Les058.java■
//キーボード入力した文字(一文字目)のunicodeを表示 import java.io.*; public class Les058 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる InputStreamReader isr = new InputStreamReader(System.in); //バイナリデータで受け取って(file名を直接引数で渡せない)UNI-CODE表示(半角1文字・全角でも1文字分)で返す、テキストデータを扱う・文字列としては扱えない、System.inでキーボードからの入力(バイナリデータなので可)を受ける int unicode = isr.read(); //read()は一文字分しか読み込めない。戻り値のあるメソッド System.out.println(unicode); } }
■Les059.java■
//filei.txtに書かれている一行目の文字列を表示1 import java.io.*; public class Les059 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる File file = new File("filei.txt"); FileInputStream fis = new FileInputStream(file); //file名・参照変数どちらも渡すことが可能。ファイルからStreamで読み込むクラス。Streamではバイナリデータ(2進数)を扱う(半角1文字・全角では1/2文字分) InputStreamReader isr = new InputStreamReader(fis); //バイナリデータで受け取って(file名を直接引数で渡せない)UNI-CODE表示(半角1文字・全角でも1文字分)で返す、テキストデータを扱う・文字列としては扱えない、System.inでキーボードからの入力(バイナリデータなので可)を受ける BufferedReader br = new BufferedReader(isr); //テキストデータを受け取れる。一行分処理可能。 String str = br.readLine(); //BufferedReaderクラスではreadLine()で一行分読み込める System.out.println(str); //filei.txtに書かれた一行目を表示 } }
■Les060.java■
//filei.txtに書かれている一行目の文字列を表示2 import java.io.*; public class Les060 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる // FileInputStream fis = new FileInputStream("filei.txt"); //file名・参照変数どちらも渡すことが可能。ファイルからStreamで読み込むクラス。Streamではバイナリデータ(2進数)を扱う(半角1文字・全角では1/2文字分) // InputStreamReader isr = new InputStreamReader(fis); //バイナリデータで受け取って(file名を直接引数で渡せない)UNI-CODE表示(半角1文字・全角でも1文字分)で返す、テキストデータを扱う・文字列としては扱えない、System.inでキーボードからの入力(バイナリデータなので可)を受ける FileReader fr = new FileReader("filei.txt"); //上の2行をひとまとめにするとこうなる BufferedReader br = new BufferedReader(fr); //テキストデータで受け取れる。一行分処理可能。 String str = br.readLine(); //BufferedReaderクラスではreadLine()で一行分読み込める System.out.println(str); //filei.txtに書かれた一行目を表示 } }
■Les061.java■
//filei.txtに書かれている一行目の文字列を表示3 import java.io.*; public class Les061 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる // FileReader fr = new FileReader("filei.txt"); // BufferedReader br = new BufferedReader(fr); BufferedReader br = new BufferedReader(new FileReader("filei.txt")); //さらに上の行をひとまとめにするとこうなる String str = br.readLine(); //filei.txtに書かれた文字(1行目)を代入 System.out.println(str); //filei.txtに書かれた文字を表示 } }
■Les062.java■
//キーボード入力した文字列を表示 import java.io.*; public class Les062 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる // InputStreamReader isr = new InputStreamReader(System.in); //バイナリデータで受け取って(file名を直接引数で渡せない)UNI-CODE表示(半角1文字・全角でも1文字分)で返す、テキストデータを扱う・文字列としては扱えない、System.inでキーボードからの入力(バイナリデータなので可)を受ける BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //上の1文をまとめた結果 String str = br.readLine(); //BufferedReaderクラスではreadLine()で一行分読み込める System.out.println(str); //filei.txtに書かれた一行目を表示 } }
■Les063.java■
//filei.txtに書かれている文字列を表示(filei.txtに記載されているのは3行) import java.io.*; public class Les063 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる BufferedReader br = new BufferedReader(new FileReader("filei.txt")); /* String str1 = br.readLine(); String str2 = br.readLine(); String str3 = br.readLine(); String str4 = br.readLine(); System.out.println(str1); System.out.println(str2); System.out.println(str3); System.out.println(str4); //文字がなければnullが返される */ String str; while((str = br.readLine()) != null) { //読み込むデータが無くなるまで System.out.println(str); } } }
■Les064.java■
//filei.txtに書かれている文字のunicodeを表示(filei.txtに記載されているのは2文字) import java.io.*; public class Les064 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる FileReader fr = new FileReader("filei.txt"); // BufferedReader br = new BufferedReader(fr); /* int i1 = fr.read(); int i2 = fr.read(); int i3 = fr.read(); System.out.println(i1); System.out.println(i2); System.out.println(i3); //文字がなければ-1が返される */ int i; while((i = fr.read()) != -1) { //読み込むデータが無くなるまで System.out.println(i); } } }
■Les065.java■
//filei.txtに書かれている文字情報を表示 import java.io.*; public class Les065 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる FileInputStream fis = new FileInputStream("filei.txt"); //file名・参照変数どちらも渡すことが可能。ファイルからStreamで読み込むクラス。Streamではバイナリデータ(2進数)を扱う(半角1文字・全角では1/2文字分) InputStreamReader isr = new InputStreamReader(fis); //バイナリデータで受け取って(file名を直接引数で渡せない)UNI-CODE表示(半角1文字・全角でも1文字分)で返す、テキストデータを扱う・文字列としては扱えない、System.inでキーボードからの入力(バイナリデータなので可)を受ける BufferedReader br = new BufferedReader(isr); //テキストデータを受け取れる。一行分処理可能。 int bytedata1 = fis.read(); System.out.println(bytedata1 + "\tfis:バイトデータ 1/2"); //1文字目 int bytedata2 = fis.read(); System.out.println(bytedata2 + "\tfis:バイトデータ 2/2"); //1文字目 int uni = isr.read(); System.out.println(uni + "\tisr:unicode"); //2文字目 int i = br.read(); //String型やchar型で直接受けようとするとエラーになる:このread()の戻り値がintで指定してあることがわかる System.out.println(i + "\tbr :文字列→read() int型"); //3文字目 char str = (char)br.read(); System.out.println(str + "\tbr :文字列→read() char型(キャスト)"); //4文字目 String str2 = br.readLine(); System.out.println(str2 + "\tbr :文字列→readLine() String型"); //5文字目 int i2 = br.read(); //String型やchar型で直接受けようとするとエラーになる:このread()の戻り値がintで指定してあることがわかる System.out.println(i2 + "\tbr :文字列→read() int型"); //6文字目:ないので-1が返される String str3 = br.readLine(); System.out.println(str3 + "\tbr :文字列→readLine() String型"); //7文字目:ないのでnullが返される br.close(); //入力ストリームのclose()は省略可 isr.close(); fis.close(); /* filei.txtの内容は「11111」(全角「1」が5文字) ■実行結果■ 130 fis:バイトデータ 1/2 80 fis:バイトデータ 2/2 65297 isr:unicode 65297 br :文字列→read() int型 1 br :文字列→read() char型(キャスト) 1 br :文字列→readLine() String型 -1 br :文字列→read() int型 null br :文字列→readLine() String型 */ } }
■Les066.java■
//キーボード入力した文字を表示 ※これは永久ループ(Ctrl+Cで止める) import java.io.*; public class Les066 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; while((str = br.readLine()) != null) { //読み込むデータが無くなるまで System.out.println(str); } } }
■Les067.java■
//キーボード入力した文字を表示 import java.io.*; public class Les067 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; while((str = br.readLine()) != null) { //読み込むデータが無くなるまで if(str.equals("end")) { //endが入力されたら System.exit(1); //引数はステータスコードとして作用し、通例、ゼロ以外は異常終了を示す。 //System.exit(n)の動作は、Runtime.getRuntime().exit(n)と同じ } else { System.out.println(str); } } } }
★出力ストリーム throws★
■Les068.java■
//fileo.txtを作成し、文字を出力 import java.io.*; public class Les068 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる FileWriter fw = new FileWriter("fileo.txt" , true); BufferedWriter br = new BufferedWriter(fw); //あってもなくてもこの場合変わらない br.write("\r\n" + "文字列" + "\r\n"); //復帰と改行 br.write("\r\n" + "文字列" + "\r\n"); br.close(); //close()することでたまった文字列が書き込まれるので後に生成したものから閉じる fw.close(); //それ以降のclose()の順序はあまり関係なく、省略も可。書き込むために必要なため入力ストリームでは考えなくてもよいが、省略せず正しい順序に慣れるように。 } }
■Les069.java■
//fileo.txtを作成し、文字を出力 import java.io.*; public class Les069 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる FileWriter fw = new FileWriter("fileo.txt" , true); BufferedWriter br = new BufferedWriter(fw); //あってもなくてもこの場合変わらない PrintWriter pr = new PrintWriter(br); //これだとprintln()が使える pr.println("文字列"); pr.close(); //この行はコメントアウトしても書き出せる br.close(); //後に生成したものから閉じるように fw.close(); } }
■Les070.java■
//fileo.txtを作成し、文字を出力 import java.io.*; public class Les070 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる PrintWriter pr = new PrintWriter(new FileWriter("fileo.txt" , true)); pr.println("文字列"); pr.close(); //これは必要 } }
★入出力ストリーム throws★
■Les071.java■
//filei.txtを読み込み、fileo.txtに出力 import java.io.*; public class Les071 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる BufferedReader br = new BufferedReader(new FileReader("filei.txt")); PrintWriter pr = new PrintWriter(new FileWriter("fileo.txt" , true)); //PrintWriterは標準出力に出す String str; while((str = br.readLine()) != null) { //読み込むデータが無くなるまで pr.println(str); } pr.close(); } }
■Les072.java■
//キーボード入力した文字を読み込み、fileo.txtに出力 import java.io.*; public class Les072 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; while((str = br.readLine()) != null) { //読み込むデータが無くなるまで if(str.equals("end")) { //endが入力されたら System.exit(1); //引数はステータスコードとして作用し、通例、ゼロ以外は異常終了を示す。System.exit(n)の動作は、Runtime.getRuntime().exit(n)と同じ } else { PrintWriter pr = new PrintWriter(new FileWriter("fileo.txt" , true)); //Les073へ:このインスタンス生成は最初に行うもので、ここに記述するのは望ましくない。 pr.println(str); // System.out.println(str); pr.close(); //ないとfileo.txtに書き込めない } } br.close(); //なくても可 } }
■Les073.java■
//キーボード入力した文字を読み込み、fileo.txtに出力 import java.io.*; public class Les073 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); PrintWriter pr = new PrintWriter(new FileWriter("fileo.txt" , true)); String str; while((str = br.readLine()) != null) { //読み込むデータが無くなるまで if(str.equals("end")) { break; // pr.close(); //これをここに書くか、上のbreak;でループ後の処理を続けるようにすればfileo.txtへの出力が可能 // System.exit(1); //引数はステータスコードとして作用し、通例、ゼロ以外は異常終了を示す。System.exit(n)の動作は、Runtime.getRuntime().exit(n)と同じ } else { System.out.println(str); pr.println(str); } } pr.close(); //Writer ないとfileo.txtに書き込めない br.close(); //Reader なくても可 } }
★継承★
■Les074.java■
//継承 ケーキにイチゴをのせたらイチゴケーキ、ケーキにメロンをのせたらメロンケーキ public class Les074 { public static void main(String[] args) { Cake cake = new Cake(); cake.show(); IchigoCake icake = new IchigoCake(); icake.show(); icake.ishow(); MeronCake mcake = new MeronCake(); mcake.show(); mcake.mshow(); } } class Cake { //親(スーパー)クラス String name = "ケーキ"; String scake = "スポンジケーキ"; void show() { System.out.println("名前は" + name + "、scakeは" + scake); } } class IchigoCake extends Cake { //子(サブ)クラス、[extends クラス名]で受け継ぐ String name = "イチゴケーキ"; //これまで勉強した記述方法だとこうなる(継承を考えなかった場合) String scake = "スポンジケーキ"; String fruit = "イチゴ"; void show() { System.out.print(name + "、scakeは" + scake); } void ishow() { System.out.println("fruitは" + fruit); } } class MeronCake extends Cake { //子(サブ)クラス String name = "メロンケーキ"; String scake = "スポンジケーキ"; String fruit = "メロン"; void show() { System.out.print(name + "、scakeは" + scake); } void mshow() { System.out.println("fruitは" + fruit); } }
■Les075.java■
//継承 親クラスの変数を使う public class Les075 { public static void main(String[] args) { Cake cake = new Cake(); cake.show(); IchigoCake icake = new IchigoCake(); icake.ishow(); icake.show(); //クラス内にshow()がなくても親クラスから継承されたshow()が使える } } class Cake { //親(スーパー)クラス String name = "ケーキ"; String scake = "スポンジケーキ"; void show() { System.out.print(name + "、scakeは" + scake); } } class IchigoCake extends Cake { //子(サブ)クラス、[extends クラス名]で受け継ぐ // String name = "イチゴケーキ"; //これまで勉強した記述方法だとこうなる(継承を考えなかった場合) // String scake = "スポンジケーキ"; String fruit = "イチゴ"; void show() { //クラス内で変数宣言しなくても親クラスの変数が使える System.out.print(name + "、scakeは" + scake); } void ishow() { System.out.print("\n" + fruit); } } class Cake { //親(スーパー)クラス String name = "ケーキ"; String scake = "スポンジケーキ"; void show() { System.out.print(name + "、scakeは" + scake); } } class IchigoCake extends Cake { //子(サブ)クラス、[extends クラス名]で受け継ぐ // String name = "イチゴケーキ"; //これまで勉強した記述方法だとこうなる(継承を考えなかった場合) // String scake = "スポンジケーキ"; String fruit = "イチゴ"; void show() { //クラス内で変数宣言しなくても親クラスの変数が使える System.out.print(name + "、scakeは" + scake); } void ishow() { System.out.print("\n" + fruit); } }
■Les076.java■
//継承 親クラスのメソッドを使う、変数は親クラスでprivate宣言 public class Les076 { public static void main(String[] args) { Cake cake = new Cake(); cake.show(); IchigoCake icake = new IchigoCake(); icake.ishow(); icake.show(); //クラス内にshow()がなくても親クラスから継承されたshow()が使える } } class Cake { //親(スーパー)クラス private String name = "ケーキ"; private String scake = "スポンジケーキ"; public void show() { System.out.print(name + "、scakeは" + scake); } } class IchigoCake extends Cake { //子(サブ)クラス、[extends クラス名]で受け継ぐ String fruit = "イチゴ"; /* public void show() { //親クラスでprivateで変数宣言されているのでエラーになる System.out.print(name + "、scakeは" + scake); } */ void ishow() { System.out.print("\n" + fruit); } }
■Les077.java■
//継承 親クラスでprotected宣言 public class Les077 { public static void main(String[] args) { Cake cake = new Cake(); cake.show(); IchigoCake icake = new IchigoCake(); icake.ishow(); icake.show(); //クラス内にshow()がなくても親クラスから継承されたshow()が使える } } class Cake { //親(スーパー)クラス protected String name = "ケーキ"; //保護する。継承したくなければprivate protected String scake = "スポンジケーキ"; public void show() { System.out.print(name + "、scakeは" + scake); } } class IchigoCake extends Cake { //子(サブ)クラス、[extends クラス名]で受け継ぐ // String name = "イチゴケーキ"; // // String scake = "スポンジケーキ"; String fruit = "イチゴ"; public void show() { //親クラスでprivateで変数宣言されているとエラーになったがprotectedで使えるようになる System.out.print(name + "、scakeは" + scake); } void ishow() { System.out.print("\n" + fruit); } }
■Les078.java■
//継承 オーバーライド:親クラスのメソッドの再定義 public class Les078 { public static void main(String[] args) { Cake cake = new Cake(); cake.show(); IchigoCake icake = new IchigoCake(); icake.show(); icake.ishow(); } } class Cake { //親(スーパー)クラス protected String name = "ケーキ"; //保護する。継承したくなければprivate protected String scake = "スポンジケーキ"; public void show() { System.out.println("親クラス:" + name + "、scakeは" + scake); } } class IchigoCake extends Cake { //子(サブ)クラス、[extends クラス名]で受け継ぐ // String name = "イチゴケーキ"; // // String scake = "スポンジケーキ"; String fruit = "イチゴ"; public void show() { //オーバーライド:親クラスのメソッドの再定義。親クラスでprivateで変数宣言されているとエラーになったがprotectedで使えるようになる System.out.print("子クラス:" + name + "、scakeは" + scake); } void ishow() { System.out.print(" " + fruit); } }
■Les079.java■
//継承 別の設定で復習 public class Les079 { public static void main(String[] args) { MyHouse my = new MyHouse(); my.house(); my.whoesHouse(); TeachersHouse teach = new TeachersHouse(); teach.house(); teach.whoesHouse(); } } class House { //親(スーパー)クラス protected String name = "家"; protected int banti = 1234; public void house() { System.out.println("物件:" + name + "、番地:" + banti); } } class MyHouse extends House { //子(サブ)クラス、[extends クラス名]で受け継ぐ private String owner = "koyuki"; public void whoesHouse() { System.out.println("オーナー:" + owner); } } class TeachersHouse extends House { //子(サブ)クラス、[extends クラス名]で受け継ぐ private String owner = "先生"; public void whoesHouse() { System.out.println("オーナー:" + owner); } }
■Les080.java■
//継承 子クラスがカラでも動く public class Les080 { public static void main(String[] args) { TVkeitai tvkeitai = new TVkeitai(); tvkeitai.telPhone(); } } class Keitai { //親(スーパー)クラス protected String name = "携帯電話"; protected int telnum = 1234; public void telPhone() { System.out.println("電話番号:" + telnum); } } class TVkeitai extends Keitai { //子(サブ)クラス、[extends クラス名]で受け継ぐ }
■Les081.java■
//継承 main()から値を渡す:変数に代入 public class Les081 { public static void main(String[] args) { TVkeitai tvkeitai = new TVkeitai(); tvkeitai.telNum(); tvkeitai.callNum(); tvkeitai.callnum = 2345; tvkeitai.callNum(); tvkeitai.watchTV(); } } class Keitai { //親(スーパー)クラス protected String name = "携帯電話"; protected int telnum = 1234; protected int callnum = 1234; public void telNum() { System.out.println(name + "の電話番号:" + telnum); } public void callNum() { System.out.println(callnum + "に電話します。"); } } class TVkeitai extends Keitai { //子(サブ)クラス、[extends クラス名]で受け継ぐ private int ch = 2; public void watchTV() { System.out.println("番組:" + ch); } }
■Les082.java■
//継承 main()から値を渡す:値渡しも使って public class Les082 { public static void main(String[] args) { TVkeitai tvkeitai = new TVkeitai("TV電話" , 2345 , 2);//コンストラクタで引数を渡す方法 tvkeitai.telNum(); tvkeitai.callnum = 2345; //変数に代入する方法 tvkeitai.callNum(); tvkeitai.callNum(3456); //メソッドで値渡し tvkeitai.watchTV(); Keitai keitai = new Keitai(); keitai.telNum(); keitai.callNum(); keitai.callNum(); } } class Keitai { //親(スーパー)クラス protected String name = "携帯電話"; protected int telnum = 1234; protected int callnum = 1234; public void telNum() { System.out.println(name + "の電話番号:" + telnum); } public void callNum() { System.out.println(callnum + "に電話します。"); } public void callNum(int n) { callnum = n; System.out.println(callnum + "に電話します。"); } } class TVkeitai extends Keitai { //子(サブ)クラス、[extends クラス名]で受け継ぐ private int ch = 2; TVkeitai(String n , int tn , int cn) { name = n; callnum = tn; ch = cn; } public void watchTV() { System.out.println("番組:" + ch + "チャンネル"); } }
■Les083.java■
//継承 main()から親クラスにも値を渡す public class Les083 { public static void main(String[] args) { TVkeitai tvkeitai = new TVkeitai("TV電話" , 2345 , 2);//コンストラクタで引数を渡す方法 tvkeitai.telNum(); tvkeitai.callnum = 2345; //変数に代入する方法 tvkeitai.callNum(); tvkeitai.callNum(3456); //メソッドで値渡し tvkeitai.watchTV(); Keitai keitai = new Keitai("携帯電話" , 1234 , 1234); //親クラスのコンストラクタで引数を渡すならデフォルトコンストラクタの記述も必要になる //よって子クラスのインスタンス生成で親クラスのインスタンスも生成(デフォルトコンストラクタによる)されていることがわかる。なお、この記述では継承の関係がない keitai.telNum(); keitai.callNum(); keitai.callNum(); } } class Keitai { //親(スーパー)クラス protected String name = "携帯電話"; protected int telnum = 1234; protected int callnum = 1234; Keitai() { //デフォルトコンストラクタ } Keitai(String n , int tn , int cn) { name = n; telnum = tn; callnum = cn; } public void telNum() { System.out.println(name + "の電話番号:" + telnum); } public void callNum() { System.out.println(callnum + "に電話します。"); } public void callNum(int n) { callnum = n; System.out.println(callnum + "に電話します。"); } } class TVkeitai extends Keitai { //子(サブ)クラス、[extends クラス名]で受け継ぐ private int ch = 2; TVkeitai(String n , int tn , int c) { name = n; callnum = tn; ch = c; } public void watchTV() { System.out.println("番組:" + ch + "チャンネル"); } }
★入力ストリーム try-catchも★
■Les084.java■
//try-catch キーボード入力した文字を表示 ※これは永久ループ(Ctrl+Cで止める) import java.io.*; public class Les084 { public static void main(String[] args) /*throws IOException*/ { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる<これを使わない方法 try { //例外が起こったらcatchで受ける BufferedReader key = new BufferedReader(new InputStreamReader(System.in)); //キーボード入力を受ける String str; while((str = key.readLine()) != null) { //読み込むデータが無くなるまで System.out.println(str); } } catch(IOException ioe) { System.out.println(ioe); //指定されたファイルが見つかりません。とエラー表示してくれる。 } } }
■Les085.java■
//try-catch filei.txtに書かれている文字列を表示・ファイルがなければエラー表示 import java.io.*; public class Les085 { public static void main(String[] args) /*throws IOException*/ { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる<これを使わない方法 try { //例外が起こったらcatchで受ける BufferedReader br = new BufferedReader(new FileReader("filei.txt")); //filei.txtを受ける String str; while((str = br.readLine()) != null) { //読み込むデータが無くなるまで System.out.println(str); } } catch(IOException ioe) { System.out.println(ioe); //指定されたファイルが見つかりません。とエラー表示してくれる。 } } }
■Les086.java■
//try-catch filei.txtに書かれている文字列を表示・ファイルがなければ任意の文字列でエラー表示 import java.io.*; public class Les086 { public static void main(String[] args) /*throws IOException*/ { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる<これを使わない方法 try { //例外が起こったらcatchで受ける BufferedReader br = new BufferedReader(new FileReader("filei.txt")); String str; while((str = br.readLine()) != null) { //読み込むデータが無くなるまで System.out.println(str); } } catch(IOException ioe) { System.out.println(ioe); ioe.printStackTrace(); System.out.println("エラーが発生しました。"); } } }
■Les087.java■
//throws filei.txtに書かれている文字列を表示・ファイルが未記入であれば任意の文字列でエラー表示 import java.io.*; public class Les087 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOExceptionに投げる BufferedReader br = new BufferedReader(new FileReader("filei.txt")); String str; if((str = br.readLine()) == null) { IOException ioe = new IOException(); // System.out.println(ioe); ioe.printStackTrace(); System.out.println("filei.txtに文字が入力されていません。"); } while(str != null) { //読み込むデータが無くなるまで System.out.println(str); str = br.readLine(); } } }
■Les088.java■
//throws キーボード入力した文字を表示 import java.io.*; public class Les088 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Car car = new Car(); String str; //キーボード入力は文字なのでString型 for(int n=0 ; n < 2 ;n++) { //2回だけの処理。for構文にするほどのことではないがとりあえず。 str = br.readLine(); if(n == 0) { car.showNum(str); } else if(n == 1) { car.showGas(str); } } } } class Car { private String num; private String gas; public void showNum(String n) { num = n; System.out.println("num:" + num); } public void showGas(String d) { gas = d; System.out.println("gas:" + gas); } }
■Les089.java■
//throws キーボード入力した文字を表示、型の変更 import java.io.*; public class Les089 { public static void main(String[] args) throws IOException { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Car car = new Car(); String str; //キーボード入力は文字なのでString型でしか受けられない int num = 0; double gas = 0; for(int n=0 ; n < 2 ;n++) { //2回だけの処理。for構文にするほどのことではないがとりあえず。 str = br.readLine(); if(n == 0) { // int num = Integer.parseInt(str); //Integer型のクラスメソッドparseInt()の呼び出し num = Integer.parseInt(str); //Integer型のクラスメソッドparseInt()の呼び出し // car.showNum(num); } else if(n == 1) { // double gas = Double.parseDouble(str); //Double型のクラスメソッドparseDouble()の呼び出し gas = Double.parseDouble(str); //Double型のクラスメソッドparseDouble()の呼び出し // car.showGas(gas); } } car.showNum(num); car.showGas(gas); } } class Car { private int num; private double gas; public void showNum(int n) { num = n; System.out.println("num:" + num); } public void showGas(double d) { gas = d; System.out.println("gas:" + gas); } }
■Les090.java■
//try-catch キーボード入力した文字を表示、型の変更・ファイルがなければエラー表示 import java.io.*; public class Les090 { public static void main(String[] args) /*throws IOException*/ { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる<これを使わない方法 System.out.println("キーボードからナンバーとガソリン量を入力してください。"); //tryの中に入れなくてもよい try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Car car = new Car(); String str; //キーボード入力は文字なのでString型でしか受けられない int num=0; double gas=0; for(int n=0 ; n < 2 ;n++) { //2回だけの処理。for構文にするほどのことではないがとりあえず。 str = br.readLine(); if(n == 0) { // int num = Integer.parseInt(str); //Integer型のクラスメソッドparseInt()の呼び出し num = Integer.parseInt(str); //Integer型のクラスメソッドparseInt()の呼び出し // car.showNum(num); //ここで処理するとナンバーの入力後表示→ガソリン量の入力となる } else if(n == 1) { // double gas = Double.parseDouble(str); //Double型のクラスメソッドparseDouble()の呼び出し gas = Double.parseDouble(str); //Double型のクラスメソッドparseDouble()の呼び出し // car.showGas(gas); } } System.out.println("入力されたナンバー:" + num); car.showNum(num); System.out.println("入力されたガソリン量:" + gas); car.showGas(gas); } catch(IOException ioe) { System.out.println(ioe); } } } class Car { private int num; private double gas; public void showNum(int n) { num = n; System.out.println("num:" + num); } public void showGas(double d) { gas = d; System.out.println("gas:" + gas); } }
■Les091.java■
//try-catch キーボード入力した文字を表示、型の変更、エラー表示 import java.io.*; public class Les091 { public static void main(String[] args) /*throws IOException*/ { //main()で例外が起こったらIOException(入出力に関する例外処理)に投げる<これを使わない方法 System.out.println("キーボードからナンバーとガソリン量を入力してください。"); //tryの中に入れなくてもよい try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Car car = new Car(); String str; //キーボード入力は文字なのでString型でしか受けられない int num=0; double gas=0; for(int n=0 ; n < 2 ;n++) { //2回だけの処理。for構文にするほどのことではないがとりあえず。 str = br.readLine(); if(n == 0) { num = Integer.parseInt(str); //Integer型のクラスメソッドparseInt()の呼び出し } else if(n == 1) { // double gas = Double.parseDouble(str); //Double型のクラスメソッドparseDouble()の呼び出し gas = Double.parseDouble(str); //Double型のクラスメソッドparseDouble()の呼び出し // car.showGas(gas); } } if(9999 >= num && num >= 0) { //-1等負の数が入力された場合 System.out.println("入力されたナンバー:" + num); car.showNum(num); } else { NumException ne = new NumException(); throw ne; //一度catchに行ってしまうと以後処理されずに終了してしまう、throwsではない // System.out.println("適切なナンバーを入力してください。"); } if(200.0 >= gas && gas >= 0.0) { System.out.println("入力されたガソリン量:" + gas); car.showGas(gas); } else { GasException ge = new GasException(); throw ge; //throwsではない // System.out.println("適切なガソリン量を入力してください。"); } } catch(IOException ioe) { System.out.println(ioe); } catch(NumException ne) { System.out.println(ne); } catch(GasException ge) { System.out.println(ge); } } } class Car { private int num; private double gas; public void showNum(int n) { num = n; System.out.println("num:" + num); } public void showGas(double d) { gas = d; System.out.println("gas:" + gas); } } class NumException extends Exception { //子(サブ)クラス public String toString() { // String str = "不適切なデータが入力されました。"; // return str; return "numに不適切なデータが入力されました。"; } } class GasException extends Exception { //子(サブ)クラス public String toString() { return "gasに不適切なデータが入力されました。"; } }
■Les092.java■
//抽象クラス:メソッドの実装は子クラス 足し算クラスは計算クラスから継承される、メソッドで値渡し public class Les092 { public static void main(String[] args) { Tasizan tasizan = new Tasizan(); tasizan.keisan(2,3); tasizan.show(); } } abstract class Keisan { //抽象クラス 親(スーパー)クラス protected int num1; protected int num2; public void show() { System.out.println("計算する数字は" + num1 + "と" + num2); } abstract public void keisan(int n1 , int n2); //抽象メソッド メソッドのヘッド←void等本体のような記述でありながら呼び出すときの;が付いていて中身もないがメソッドの呼び出しではない } class Tasizan extends Keisan { //子(サブ)クラス 抽象メソッドを実装しなければならない:メソッド本体を記述 private int sum; public void show() { //オーバーライド:親クラスのメソッドの再定義 System.out.println("計算する数字は" + num1 + "と" + num2); System.out.println("計算の答えは" + sum); } public void keisan(int n1 , int n2){ //メソッドの実装 num1 = n1; num2 = n2; sum = num1 + num2; } }
■Les093.java■
//抽象クラス 足し算クラスと掛け算クラスが計算クラスから継承される、メソッドで値渡し public class Les093 { public static void main(String[] args) { Tasizan tasizan = new Tasizan(); Kakezan kakezan = new Kakezan(); tasizan.keisan(2,3); tasizan.show(); kakezan.keisan(2,3); kakezan.show(); } } abstract class Keisan { //抽象クラス 親(スーパー)クラス protected int num1; protected int num2; public void show() { System.out.println("計算する数字は" + num1 + "と" + num2); } abstract public void keisan(int n1 , int n2); //抽象メソッド メソッドのヘッド←void等本体のような記述でありながら呼び出すときの;が付いていて中身もないがメソッドの呼び出しではない } class Tasizan extends Keisan { //子(サブ)クラス 抽象メソッドを実装しなければならない:メソッド本体を記述、シグネチャを合わせること private int sum; public void show() { //オーバーライド:親クラスのメソッドの再定義 System.out.println("計算する数字は" + num1 + "と" + num2); System.out.println("計算:加算の答えは" + sum); } public void keisan(int n1 , int n2){ //メソッドの実装 num1 = n1; num2 = n2; sum = num1 + num2; } } class Kakezan extends Keisan { //子(サブ)クラス 抽象メソッドを実装しなければならない:メソッド本体を記述、シグネチャを合わせること private int sum; public void show() { //オーバーライド:親クラスのメソッドの再定義 System.out.println("計算する数字は" + num1 + "と" + num2); System.out.println("計算:乗算の答えは" + sum); } public void keisan(int n1 , int n2){ //メソッドの実装 num1 = n1; num2 = n2; sum = num1 * num2; } }
■Les094.java■
//抽象クラス Les093の値渡しを子クラスのコンストラクタで public class Les094 { public static void main(String[] args) { Tasizan tasizan = new Tasizan(2,3); Kakezan kakezan = new Kakezan(2,3); tasizan.keisan(); tasizan.show(); kakezan.keisan(); kakezan.show(); } } abstract class Keisan { //抽象クラス 親(スーパー)クラス protected int num1; protected int num2; public void show() { System.out.println("計算する数字は" + num1 + "と" + num2); } abstract public void keisan(); //抽象メソッド メソッドのヘッド←void等本体のような記述でありながら呼び出すときの;が付いていて中身もないがメソッドの呼び出しではない } class Tasizan extends Keisan { //子(サブ)クラス 抽象メソッドを実装しなければならない:メソッド本体を記述、シグネチャを合わせること private int sum; Tasizan(int n1 , int n2) { num1 = n1; num2 = n2; } public void keisan(){ //抽象メソッド メソッドのヘッド←void等本体のような記述でありながら呼び出すときの;が付いていて中身もないがメソッドの呼び出しではない sum = num1 + num2; } public void show() { System.out.println("計算する数字は" + num1 + "と" + num2); System.out.println("計算:加算の答えは" + sum); } } class Kakezan extends Keisan { //子(サブ)クラス 抽象メソッドを実装しなければならない:メソッド本体を記述、シグネチャを合わせること private int sum; Kakezan(int n1 , int n2) { num1 = n1; num2 = n2; } public void keisan(){ //抽象メソッド メソッドのヘッド←void等本体のような記述でありながら呼び出すときの;が付いていて中身もないがメソッドの呼び出しではない sum = num1 * num2; } public void show() { System.out.println("計算する数字は" + num1 + "と" + num2); System.out.println("計算:乗算の答えは" + sum); } }
■Les095.java■
//抽象クラス 他の設定でも考えてみる public class Les095 { public static void main(String[] args) { Ringine rkai = new Ringine("海鮮","トマト"); Tagliatelle tkinoko = new Tagliatelle("きのこ","ミート"); Gnocchi gkinoko = new Gnocchi("野菜","ホワイト"); rkai.show(); tkinoko.show(); gkinoko.show(); } } abstract class Pasta { //抽象クラス 親(スーパー)クラス protected String name; protected String source; protected String men; abstract public void show(); //抽象メソッド メソッドのヘッド←void等本体のような記述でありながら呼び出すときの;が付いていて中身もないがメソッドの呼び出しではない } class Ringine extends Pasta { //子(サブ)クラス 抽象メソッドを実装しなければならない:メソッド本体を記述、シグネチャを合わせること Ringine(String n , String s) { name = n; source = s; men = "リングィネ"; } public void show() { System.out.println(source + "ソースの" + name + "・" + men); } } class Tagliatelle extends Pasta { //子(サブ)クラス 抽象メソッドを実装しなければならない:メソッド本体を記述、シグネチャを合わせること Tagliatelle(String n , String s) { name = n; source = s; men = "タリアテッレ"; } public void show() { System.out.println(source + "ソースの" + name + "・" + men); } } class Gnocchi extends Pasta { //子(サブ)クラス 抽象メソッドを実装しなければならない:メソッド本体を記述、シグネチャを合わせること Gnocchi(String n , String s) { name = n; source = s; men = "ニョッキ"; } public void show() { System.out.println(source + "ソースの" + name + "・" + men); } }
■Les096.java■
//抽象クラス Les095に入出力ストリームを使ってみる(リングィネのみ) import java.io.*; public class Les096 { public static void main(String[] args) { System.out.println("種類とソースを入力してください。"); //tryの中に入れなくてもよい try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Ringine rkai = new Ringine(); String str; // String name; // String source; for(int n=0 ; n < 2 ;n++) { //2回だけの処理。 str = br.readLine(); if(n == 0) { rkai.name = str; } else if(n == 1) { rkai.source = str; } } // Ringine rkai = new Ringine(name , source); //初期化されていないというエラーが出るが値渡しをするならname=strより後に記述しないといけないので方針変更:変数に代入することにした // Tagliatelle tkinoko = new Tagliatelle("きのこ","ミート"); // Gnocchi gkinoko = new Gnocchi("野菜","ホワイト"); rkai.show(); // tkinoko.show(); // gkinoko.show(); } catch(IOException ioe) { System.out.println(ioe); } } } abstract class Pasta { //抽象クラス 親(スーパー)クラス protected String name; protected String source; protected String men; abstract public void show(); //抽象メソッド メソッドのヘッド←void等本体のような記述でありながら呼び出すときの;が付いていて中身もないがメソッドの呼び出しではない } class Ringine extends Pasta { //子(サブ)クラス 抽象メソッドを実装しなければならない:メソッド本体を記述、シグネチャを合わせること Ringine(/*String n , String s*/) { // name = n; // source = s; men = "リングィネ"; } public void show() { System.out.println(source + "ソースの" + name + "・" + men); } }
■Les097.java■
//入出力ストリームで使ったIOException・toString() public class Les097 { public static void main(String[] args) { Car car = new Car(); System.out.println(car); //参照変数を表示 String inf = car.toString(); //String型で受ける System.out.println(inf); //toString()の戻り値を表示 } } class Car { public String toString() { //文字列を返す 戻り値がなければvoidだがこれは戻り値がString型なのでString return "Carクラスの情報です"; } }
■Les098.java■
//インターフェイス 円周を求める public class Les098 { public static void main(String[] args) { Circle cl = new Circle(10.0); cl.keisan(); cl.showCircle(); } } interface Keisan { //抽象クラス 親(スーパー)クラス //public static final double PAI = 3.14; double PAI = 3.1415926535; //記述がなくてもpublic static finalになっている 定数(final)は慣習により大文字 //public abstract void keisan(); void keisan(); //記述がなくてもpublic abstractになっている } class Circle implements Keisan { //子(サブ)クラス インターフェイスのメソッドを実装しなければならない:メソッド本体を記述 private double r; private double circle; Circle(double n) { r = n; } public void keisan(){ //インターフェイスはpublic abstractなのでpublic要 メソッドの実装 circle = (r * 2) * PAI; } public void showCircle(){ System.out.println("半径" + r + "cmの円の円周:" + circle + "cm"); } }
■Les099java■
//占い JavaScriptからの書き換えに挑戦 import java.io.*; //import java.util.Date; public class Les099 { public static void main(String[] args) { try { System.out.println("西暦年を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Rokusei roku = new Rokusei(); String str; int y = 0; int m = 0; int d = 0; for(int n=0 ; n < 3 ; n++) { str = br.readLine(); if(n == 0) { y = Integer.parseInt(str); //Integer型のクラスメソッドparseInt()の呼び出し roku.y = y; System.out.println("誕生月を入力してください。"); } else if(n == 1) { m = Integer.parseInt(str); //Integer型のクラスメソッドparseInt()の呼び出し roku.m = m; System.out.println("誕生日を入力してください。"); } else if(n == 2) { d = Integer.parseInt(str); //Integer型のクラスメソッドparseInt()の呼び出し roku.d = d; } } roku.show(); if((0>=y)) { //負の数等が入力された場合 NenException nen = new NenException(); throw nen; //一度catchに行ってしまうと以後処理されずに終了してしまう、throwsではない } else if((0>=m)||(m>12)) { GaException ga = new GaException(); throw ga; //一度catchに行ってしまうと以後処理されずに終了してしまう、throwsではない } else if((0>=d)||(d>31)) { PpiException ppi = new PpiException(); throw ppi; //一度catchに行ってしまうと以後処理されずに終了してしまう、throwsではない } int inyou=0; String inyo="-"; String[] ani = {"長距離ランナーのチータ","社交家のたぬき","落ち着きのない猿","フットワークの軽い子守熊","面倒見のいい黒ひょう","愛情あふれる虎","全力疾走するチータ","磨き上げられたたぬき","大きな志をもった猿","母性豊かな子守熊","正直なこじか","人気者のゾウ","ネアカの狼","協調性のないひつじ","どっしりとした猿","コアラのなかの子守熊","強い意志をもったこじか","デリケートなゾウ","放浪の狼","物静かなひつじ","落ち着きのあるペガサス","強靭な翼をもつペガサス","無邪気なひつじ","クリエィティブな狼","穏やかな狼","粘り強いひつじ","波乱に満ちたペガサス","優雅なペガサス","チャレンジ精神の旺盛なひつじ","順応性のある狼","リーダーとなるゾウ","しっかり者のこじか","活動的な子守熊","気分屋の猿","頼られると嬉しいひつじ","好感のもたれる狼","まっしぐらに突き進むゾウ","華やかなこじか","夢とロマンの子守熊","尽くす猿","大器晩成のたぬき","足腰の強いチータ","動きまわる虎","情熱的な黒ひょう","サービス精神旺盛な子守熊","守りの猿","人間味あふれるたぬき","品格のあるチータ","ゆったりとした悠然の虎","落ちこみの激しい黒ひょう","我が道を行くライオン","統率力のあるライオン","感情豊かな黒ひょう","楽天的な虎","パワフルな虎","気どらない黒ひょう","感情的なライオン","傷つきやすいライオン","束縛をきらう黒ひょう","慈悲深い虎"}; String[] color = {"黄","緑","赤","橙","茶","黒","金","銀","青","紫"}; inyou = (y%2==0) ? (0) : (1); inyo = (y%2==0) ? ("+") : ("−"); //J-S (y%2==0)?(inyou=0,inyo="+"):(inyou=1,inyo="−"); //JAVAではこの形にできない /* if (y%2==0) { inyou=0; inyo="+"; } else { inyou=1; inyo="−"; } */ //非推奨引数 Date birth = new Date(y,m-1,d); //代わりにコンストラクタDate(long date) を使用 //非推奨引数 Date point = new Date(0,0,-9); //or(0,-1,22)or(0,-1,-38) //J-S int sei = (int)Math.ceil( ( birth.getTime() - point.getTime() ) / (1000*60*60*24) )%60; int[] md = {31,28,31,30,31,30,31,31,30,31,30,31}; int yd = 0; //月、日付、何日まであるかのフラグ for(int i=1 ; i
■Les100.java■
//パッケージ main()を持たないクラスを別ファイルに分離、2つの別ファイルをカレントD(Car0.java)と下位ディレクトリ(sub/Car1.java)とに置く //import Car0; //同じディレクトリでは省略(書けない?) import sub.Car1; //import [ディレクトリ名].[ファイル名]、全てのファイルがカレントDにあるなら不要 public class Les100 { public static void main(String[] args) { Car car = new Car(); Car1 car1 = new Car1(); car.show(1234); car1.show(5678); } } /*public*/ class Car { //同じパッケージ(ファイル内)ではpublicにできない private int num; public void show(int n) { num = n; System.out.println("num:" + num); } }
::Car0.java::
//Les100と同じディレクトリに置く //package .; //package [ディレクトリ名];、同じディレクトリなので省略:このファイルがカレントDから見てどこにあるかを記述・カレントDにあれば不要 public class Car0 { //public要 private int num0; public void show(int n) { num0 = n; System.out.println("num0:" + num0); } }
::Car1.java::
//下位ディレクトリ「sub」の中に置く package sub; //package [ディレクトリ名]; このファイルがカレントDから見てどこにあるかを記述・カレントDにあれば不要 public class Car1 { //public要 private int num1; public void show(int n) { num1 = n; System.out.println("num1:" + num1); } }
■Les101.java■
//パッケージ main()を持たないクラスを別ファイルに分離、コンストラクタで値渡し(別ファイルのコンストラクタにpublic要) import sub.Pasta; //import [ディレクトリ名].[ファイル名];、全てのファイルがカレントDにあるなら不要 public class Les101 { public static void main(String[] args) { Pasta rkai = new Pasta("海鮮","トマト" , "リングィネ"); Pasta tkinoko = new Pasta("きのこ","ミート" , "タリアテッレ"); Pasta gkinoko = new Pasta("野菜","ホワイト" , "ニョッキ"); rkai.show(); // rkai.name = "a"; //privateの変数にこういったアクセスができない // System.out.println(rkai.name); tkinoko.show(); gkinoko.show(); } }
::Pasta.java::
//下位ディレクトリ「sub」の中に置く package sub; //package [ディレクトリ名]; このファイルがカレントDから見てどこにあるかを記述・カレントDにあれば不要 public class Pasta { //public要 private String name; private String source; private String men; public Pasta(String n , String s , String m) { //ここにもpublic要 name = n; source = s; men = m; } public void show(/*String n , String s , String m*/) { // name = n; // source = s; // men = m; System.out.println(source + "ソースの" + name + "・" + men); } }
■Les102.java■
//パッケージ main()を持たないクラスを別ファイルに分離、メソッドで値渡し import sub.Pasta2; //import [ディレクトリ名].[ファイル名];、全てのファイルがカレントDにあるなら不要 public class Les102 { public static void main(String[] args) { Pasta2 rkai = new Pasta2(); Pasta2 tkinoko = new Pasta2(); Pasta2 gkinoko = new Pasta2(); rkai.show("海鮮","トマト" , "リングィネ"); tkinoko.show("きのこ","ミート" , "タリアテッレ"); gkinoko.show("野菜","ホワイト" , "ニョッキ"); } }
::Pasta2.java::
//下位ディレクトリ「sub」の中に置く package sub; //package [ディレクトリ名]; このファイルがカレントDから見てどこにあるかを記述・カレントDにあれば不要 public class Pasta2 { //public要 private String name; private String source; private String men; /* Pasta(String n , String s , String m) { name = n; source = s; men = m; } */ public void show(String n , String s , String m) { name = n; source = s; men = m; System.out.println(source + "ソースの" + name + "・" + men); } }
■Les103.java■
//パッケージ main()を持たないクラスを別ファイルに分離・main()を持つクラスもカレントDに置かない //下位ディレクトリ「main」の中に置く package main; //package [ディレクトリ名]; このファイルがカレントDから見てどこにあるかを記述、main()を持つクラスもカレントDに置かないなら必要・カレントDにあれば不要 /*推奨: 可 ●コンパイル:>Javac [ディレクトリ名]\[ファイル名].java ●実行:Java [ディレクトリ名].[ファイル名] 不可●コンパイル:>Javac [ディレクトリ名]/[ファイル名].java ●実行:Java [ディレクトリ名].[ファイル名] 可 ●コンパイル:>Javac [ディレクトリ名]\[ファイル名].java ●実行:Java [ディレクトリ名]/[ファイル名] 可 ●コンパイル:>Javac [ディレクトリ名]/[ファイル名].java ●実行:Java [ディレクトリ名]/[ファイル名] コンパイルはwindows(\)、実行はJAVAサイド(.)なので各々のディレクトリ区切りの記号を使う */ import sub.Pasta3; //import [ディレクトリ名].[ファイル名];、全てのファイルがカレントDにあるなら不要 public class Les103 { public static void main(String[] args) { public static void main(String[] args) {推奨 Pasta3 rkai = new Pasta3(); Pasta3 tkinoko = new Pasta3(); Pasta3 gkinoko = new Pasta3(); rkai.show("海鮮","トマト" , "リングィネ"); tkinoko.show("きのこ","ミート" , "タリアテッレ"); gkinoko.show("野菜","ホワイト" , "ニョッキ"); } }
::Pasta3.java::
//下位ディレクトリ「sub」の中に置く package sub; //package [ディレクトリ名]; このファイルがカレントDから見てどこにあるかを記述・カレントDにあれば不要 public class Pasta3 { //public要 private String name; private String source; private String men; public void show(String n , String s , String m) { name = n; source = s; men = m; System.out.println(source + "ソースの" + name + "・" + men); } }
■Les104.java■
//住宅ローン返済PG 元金100万 年利4% 5年で返済 元金を基準に毎年同額の利子とする import java.io.*; public class Les104 { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("元金を入力してください。"); KoteiLoan loan = new KoteiLoan(); String sgankin = br.readLine(); //元金 キーボード入力はString型でしか受けられない System.out.println("年利を入力してください。"); String snenri = br.readLine(); //年利 キーボード入力はString型でしか受けられない System.out.println("年数を入力してください。"); String snen = br.readLine(); //年数 キーボード入力はString型でしか受けられない int gankin = Integer.parseInt(sgankin); //元金 Integer型のクラスメソッドparseInt()の呼び出し double nenri = Double.parseDouble(snenri); //年利 Double型のクラスメソッドparseDouble()の呼び出し int nen = Integer.parseInt(snen); //年数 Integer型のクラスメソッドparseInt()の呼び出し loan.total(gankin , nenri , nen); } catch(IOException ioe) { System.out.println(ioe); } } } class KoteiLoan { public int lgankin; private double lnenri; public int lnen; public int total; public void total(int n , double m , int l) { lgankin = n; lnenri = m; lnen = l; System.out.println("元金:" + lgankin + "、年利:" + lnenri + "、年数:" + lnen); total = (int)(lgankin * lnenri * lnen); //利子=元金*年利*年数 System.out.println("利子:" + total); total = total + lgankin; //支払総額 System.out.println("返済総額:" + total); total = total / lnen; //年額 System.out.println("返済年額:" + total); total = total / 12; //月額 System.out.println("返済月額:" + total); } }
■Les105.java■
//住宅ローン返済PG 元金100万 年利4% 5年で返済 支払額減額を元に利子を計算する(1年単位) import java.io.*; public class Les105 { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("元金を入力してください。"); HendouLoan loan = new HendouLoan(); String sgankin = br.readLine(); //元金 キーボード入力はString型でしか受けられない System.out.println("年利を入力してください。"); String snenri = br.readLine(); //年利 キーボード入力はString型でしか受けられない System.out.println("年数を入力してください。"); String snen = br.readLine(); //年数 キーボード入力はString型でしか受けられない int gankin = Integer.parseInt(sgankin); //元金 Integer型のクラスメソッドparseInt()の呼び出し double nenri = Double.parseDouble(snenri); //年利 Double型のクラスメソッドparseDouble()の呼び出し int nen = Integer.parseInt(snen); //年数 Integer型のクラスメソッドparseInt()の呼び出し loan.total(gankin , nenri , nen); } catch(IOException ioe) { System.out.println(ioe); } } } class HendouLoan { private int lgankin; private double lnenri; private int lnen; private int nengankin; private int kingaku; private int total = 0; private int risi = 0; private int count; public void total(int n , double m , int l) { lgankin = n; lnenri = m; lnen = l; System.out.println("元金:" + lgankin + "、年利:" + lnenri + "、年数:" + lnen); nengankin = lgankin / 5; //年額(利子含まず) for(count=0 ; count
■Les106.java■
//住宅ローン返済PG 元金100万・年利4%・5年で返済 支払額減額を元に利子を計算する import java.io.*; public class Les106 { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("元金を入力してください。"); TukiHendouLoan Loan = new TukiHendouLoan(); String sgankin = br.readLine(); //元金 キーボード入力はString型でしか受けられない System.out.println("年利を入力してください。"); String snenri = br.readLine(); //年利 キーボード入力はString型でしか受けられない System.out.println("年数を入力してください。"); String snen = br.readLine(); //年数 キーボード入力はString型でしか受けられない int gankin = Integer.parseInt(sgankin); //元金 Integer型のクラスメソッドparseInt()の呼び出し double nenri = Double.parseDouble(snenri); //年利 Double型のクラスメソッドparseDouble()の呼び出し int nen = Integer.parseInt(snen); //年数 Integer型のクラスメソッドparseInt()の呼び出し Loan.total(gankin , nenri , nen); } catch(IOException ioe) { System.out.println(ioe); } } } class TukiHendouLoan { private int lgankin; private double lnenri; private int lnen; private int tukigankin; private int kingaku; private int total = 0; private int risi = 0; private int count; public void total(int n , double m , int l) { lgankin = n; lnenri = m; lnen = l; System.out.println("元金:" + lgankin + "、年利:" + lnenri + "、年数:" + lnen); tukigankin = lgankin / lnen / 12; //月額(利子含まず) for(count=0 ; count < lnen*12 ; count++) { risi = (int)(lgankin * lnenri / 12); //利子=元金*年利/12ヶ月 System.out.println((count + 1) + "回目の利子:\\" + risi); lgankin = lgankin - tukigankin; //支払済分元金を減額 kingaku = tukigankin + 1 + risi; //月額(利子含) /*元金100万・年利4%・5年で返済 1年・2年・3年・4年・5年 2000,1933,1867,1800,1733 ←+1 1999,1932,1866,1799,1732 ←端数として\1足さなかった場合 2000,1933,1866,1800,1733 ←年割(Sample62) */ System.out.println((count + 1) + "回目の返済額:\\" + kingaku); total = total + kingaku; //支払総額算出のため加算 } System.out.println("返済総額:" + total); } }
■Les107.java■
//住宅ローン返済PG 元金100万・年利4%・5年で返済 支払額減額を元に利子を計算する fileo.txtに出力 import java.io.*; public class Les107 { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("元金を入力してください。"); TukiHendouLoan Loan = new TukiHendouLoan(); String sgankin = br.readLine(); //元金 キーボード入力はString型でしか受けられない System.out.println("年利を入力してください。"); String snenri = br.readLine(); //年利 キーボード入力はString型でしか受けられない System.out.println("年数を入力してください。"); String snen = br.readLine(); //年数 キーボード入力はString型でしか受けられない int gankin = Integer.parseInt(sgankin); //元金 Integer型のクラスメソッドparseInt()の呼び出し double nenri = Double.parseDouble(snenri); //年利 Double型のクラスメソッドparseDouble()の呼び出し int nen = Integer.parseInt(snen); //年数 Integer型のクラスメソッドparseInt()の呼び出し Loan.total(gankin , nenri , nen); } catch(IOException ioe) { System.out.println(ioe); } } } class TukiHendouLoan { private int lgankin; private double lnenri; private int lnen; private int tukigankin; private int kingaku; private int total = 0; private int risi = 0; private int count; public void total(int n , double m , int l) throws IOException { PrintWriter pr = new PrintWriter(new FileWriter("fileo.txt" , true)); lgankin = n; lnenri = m; lnen = l; System.out.println("元金:" + lgankin + "、年利:" + lnenri + "、年数:" + lnen); tukigankin = lgankin / lnen / 12; //月額(利子含まず) for(count=0 ; count < lnen*12 ; count++) { risi = (int)(lgankin * lnenri / 12); //利子=元金*年利/12ヶ月 System.out.println((count + 1) + "回目の利子:\\" + risi); pr.println((count + 1) + "回目の利子:\\" + risi); lgankin = lgankin - tukigankin; //支払済分元金を減額 kingaku = tukigankin + 1 + risi; //月額(利子含) /*元金100万・年利4%・5年で返済 1年・2年・3年・4年・5年 2000,1933,1867,1800,1733 ←+1 1999,1932,1866,1799,1732 ←端数として\1足さなかった場合 2000,1933,1866,1800,1733 ←年割(Sample62) */ System.out.println((count + 1) + "回目の返済額:\\" + kingaku); pr.println((count + 1) + "回目の返済額:\\" + kingaku); total = total + kingaku; //支払総額算出のため加算 } System.out.println("返済総額:\\" + total); pr.println("返済総額:\\" + total); pr.close(); } }
★★★ サーブレット ★★★
■Les109〜Les111■
::web.xml::
Welcome to entry
Welcome to entry
HS1
Les109
HS1
/Les109
HS2
Les110
HS2
/les2/HS2
Les4
lesson.Les111
Les4
/les/HelloS4
::Les109.java〜Les111.java::
//Les111.classは下位ディレクトリlessonに置く package lesson; //Les111に記述要、下位フォルダlessonの中にある:クラスファイルをlessonに入れないとダメ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Les109 extends HttpServlet { //***Les110・Les111それぞれに変える*** 親クラスHttpServletを継承 public void doGet(HttpServletRequest reqrest,HttpServletResponse response) //戻り値のない(void)メソッドdoGet()の呼出、仮引数がある(大切なのはシグネチャ)・参照変数 throws IOException,ServletException { //入出力の例外処理やサーブレットの例外処理が起こったらthrowsして停止 PrintWriter out = response.getWriter(); //インスタンスの生成をしていない、ゲッターメソッドなので戻り値がある、 out.println("Hello Servlet"); out.close(); //なくても動くけど記述しておく } }
■Les112.java■
// パッケージ(コンテキスト直下でない) package foo; //下位フォルダfooの中にある:クラスファイルをfooに入れないとダメ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Les112 extends HttpServlet { public void doGet(HttpServletRequest reqrest,HttpServletResponse response) throws IOException,ServletException { PrintWriter out = response.getWriter(); out.println("foo"); //ブラウザに表示 System.out.println("foo"); //コンソール画面に表示 } }
■Les113.java■
// 階層構造 コンテキストfirst内のFirst001.class(web.xmlのURLパターンは/f001)へ入力したデータを渡す import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Les113 extends HttpServlet { //親クラスHttpServletを継承 public void doGet(HttpServletRequest request,HttpServletResponse response) //戻り値のない(void)メソッドdoGet()の呼出、仮引数がある(大切なのはシグネチャ)・参照変数 throws IOException,ServletException { //入出力の例外処理やサーブレットの例外処理が起こったらthrowsして停止 response.setContentType("text/html; charset=Shift_JIS;"); //ブラウザで日本語表示、セッターメソッド、出力処理の前に記述 response.setContentType("image/jpeg;"); //ブラウザで日本語表示、セッターメソッド、出力処理の前に記述 PrintWriter out = response.getWriter(); //インスタンスの生成をしていない、ゲッターメソッドなので戻り値がある、 out.println("
整数の入力
"); out.println("
"); out.println("
::整数の入力::
"); // out.println("
"); //実ファイル名:web.xmlのURLで異なる名前を指定しているので表示できない out.println("
"); //URLで指定したファイル名:表示できる(同ディレクトリなのでコンテキスト名までなくても可) // out.println("
"); //頭に/を付けると表示できない // out.println("
"); //web.xmlで指定したURLのフルの記述:当然表示できる // out.println("
"); //絶対パスなので表示できる out.println("
NAME
"); out.println("
"); out.println("
MAIL
"); out.println("
"); out.println("
"); out.println("
"); out.println("
::Querfloete Galerie::
"); out.println("
"); out.close(); //なくても動くけど記述しておく } }
★★★ SQL:JSPでDB操作 ★★★
■db101.jsp■
<%-- 入力順に表示 まずはデータの表示のみ http://localhost:8080/entry/db1/db101.jsp JSPのコメント--%> <%@page contentType="text/html; charset=Shift_JIS"%> <%--←ディレクティブ--%> <%@page import="db1.*" %> <%@page import="java.sql.*" %> <% Statement stmt; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); /*ドライバをロードDBによってDriverの名前が決まっている Accessはsun.jdbc.odbc.JdbcOdbcDriver hsqlはorg.hsqldb.jdbcDriver*/ String url ="jdbc:odbc:sample"; String id=""; String pass=""; System.out.println("ドライバをロードしました。"); Connection con = DriverManager.getConnection(url,id,pass); // Connection con = DriverManager.getConnection("jdbc:odbc:sample","",""); //url,ユーザーid,パスワード このように1行で書けるが通常上のように変数を使う stmt = con.createStatement(); System.out.println("データベースと接続しました。"); /* if(args.length == 2){ String query = "insert into CUSTOMER values (" + args[0] + ", '" + args[1] +"')"; //insert:挿入 stmt.executeUpdate(query); //select以外はexecuteUpdate()でこのメソッドの戻り値はint }else if(args.length ==1){ String query3 = "delete from CUSTOMER where id=" + args[0]; //削除されました stmt.executeUpdate(query3); //select以外はexecuteUpdate()でこのメソッドの戻り値はint }else{ System.out.println("データは更新されませんでした。"); //update:更新 } */ %>
HelloRDB
DB
<% String query1 = "select * from CUSTOMER"; ResultSet rs = stmt.executeQuery(query1); //selectはexecuteQuery()でこのメソッドの戻り値はResultSet while(rs.next()){ //rs.next()がない限りgetで取得できない。1行目が項目名でデータがないのでnext()でデータの入っている次の行へ行かないといけない int age = rs.getInt("id"); //項目をカラムという String name = rs.getString("name"); out.println("
IDは [" + age + "] 名前は [" + name + "]"); } rs.close(); stmt.close(); con.close(); %>
■db102.jsp■
<%-- 入力順に表示 データの追加も http://localhost:8080/entry/db1/db102.jsp JSPのコメント--%> <%@page contentType="text/html; charset=Shift_JIS"%> <%--←ディレクティブ--%> <%@page import="db1.*" %> <%@page import="java.sql.*" %> <% Statement stmt; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); /*ドライバをロードDBによってDriverの名前が決まっている Accessはsun.jdbc.odbc.JdbcOdbcDriver hsqlはorg.hsqldb.jdbcDriver*/ String url ="jdbc:odbc:sample"; String id=""; String pass=""; System.out.println("ドライバをロードしました。"); Connection con = DriverManager.getConnection(url,id,pass); // Connection con = DriverManager.getConnection("jdbc:odbc:sample","",""); //url,ユーザーid,パスワード このように1行で書けるが通常上のように変数を使う stmt = con.createStatement(); System.out.println("データベースと接続しました。"); %>
HelloRDB
DB
id:
name:
<% String pid = request.getParameter("pid"); String pname = request.getParameter("pname"); // int id = Integer.parseInt(pid); if((pid != null) && (pname != null)){ String query = "insert into CUSTOMER values (" + pid + ", '" + pname +"')"; //insert:挿入 stmt.executeUpdate(query); //select以外はexecuteUpdate()でこのメソッドの戻り値はint } String query1 = "select * from CUSTOMER"; ResultSet rs = stmt.executeQuery(query1); //selectはexecuteQuery()でこのメソッドの戻り値はResultSet while(rs.next()){ //rs.next()がない限りgetで取得できない。1行目が項目名でデータがないのでnext()でデータの入っている次の行へ行かないといけない int age = rs.getInt("id"); //項目をカラムという String name = rs.getString("name"); out.println("
IDは [" + age + "] 名前は [" + name + "]"); } rs.close(); stmt.close(); con.close(); %>
■db103.jsp■
<%-- 入力順に表示 データの追加・削除 http://localhost:8080/entry/db1/db103.jsp JSPのコメント--%> <%@page contentType="text/html; charset=Shift_JIS"%> <%--←ディレクティブ--%> <%@page import="db1.*" %> <%@page import="java.sql.*" %> <% Statement stmt; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); /*ドライバをロードDBによってDriverの名前が決まっている Accessはsun.jdbc.odbc.JdbcOdbcDriver hsqlはorg.hsqldb.jdbcDriver*/ String url ="jdbc:odbc:sample"; String id=""; String pass=""; System.out.println("ドライバをロードしました。"); Connection con = DriverManager.getConnection(url,id,pass); // Connection con = DriverManager.getConnection("jdbc:odbc:sample","",""); //url,ユーザーid,パスワード このように1行で書けるが通常上のように変数を使う stmt = con.createStatement(); System.out.println("データベースと接続しました。"); %>
HelloRDB
DB:テーブルCUSTOMERの操作
データの追加:idとnameの入力
データの削除:idのみの入力
id:
name:
<% String pid = request.getParameter("pid"); String pname = request.getParameter("pname"); // int id = Integer.parseInt(pid); // System.out.println("pid:" + pid + "pname:" + pname); if((pid != null) || (pname != null)){ //どちらかでもnullなら処理しない if(!(pid.equals("")) && !(pname.equals(""))){ //なおかつ、どちらも空白でない:どちらも入力されてる String query = "insert into CUSTOMER values (" + pid + ", '" + pname +"')"; //insert:挿入 stmt.executeUpdate(query); //select以外はexecuteUpdate()でこのメソッドの戻り値はint %> データを追加しました。
<% }else if(!(pid.equals("")) && (pname.equals(""))){ //idのみ入力されてたら String query3 = "delete from CUSTOMER where id=" + pid; //削除 stmt.executeUpdate(query3); //select以外はexecuteUpdate()でこのメソッドの戻り値はint %> データを削除しました。
<% }else{ %> データは更新されませんでした。
<% } //update:更新 }else{ System.out.println("データはありません。"); %> データはありません。 <% } String query1 = "select * from CUSTOMER"; ResultSet rs = stmt.executeQuery(query1); //selectはexecuteQuery()でこのメソッドの戻り値はResultSet while(rs.next()){ //rs.next()がない限りgetで取得できない。1行目が項目名でデータがないのでnext()でデータの入っている次の行へ行かないといけない int age = rs.getInt("id"); //項目をカラムという String name = rs.getString("name"); %>
IDは [<%=age%>] 名前は [<%=name%>] <% } rs.close(); stmt.close(); con.close(); %>
★★★ その他JAVA PG ★★★
オセロゲームver.0.52 のソース
オセロゲームver.0.42 のソース
オセロゲームver.0.3 のソース
オセロゲームver.0.2 のソース
オセロゲームver.0.1 のソース
::はじめてのプログラミング::
::PHPの学習::
::Querfloete Galerie::