次に、バッチファイルを作ります。 j.batというテキストファイルを作って、中身を以下のようにします。 ※最初の1行の数字は、インストールしたフォルダにあわせてください。 SET JAVA_HOME=D:\j2sdk1.5.2_06 SET PATH=%PATH%;%JAVA_HOME%\bin SET CLASSPATH=.;%JAVA_HOME%\lib\tools.jar
応用。割り算です。 /が÷の意味です。でてこないけど、*は×です。 計算 public class helloWorld { public static void main(String[] args) { // 変数の定義 int x;
// xに10を代入 x = 10;
// 計算 x = x / 5;
// 文字を表示する System.out.println("x:" + x); } }
15 :
さらに応用です。 //男子800、女子700円で8時間働いた額を求める public class helloWorld { public static void main(String[] args) { // 変数の定義と初期化 int jikyuDansei = 800; int jikyuJosei = 700; int kyuryoDansei = 0; int kyuryoJosei = 0;
こんな感じでもOKですね。 //男子800、女子700円で8時間働いた額を求める(別の例) public class helloWorld { public static void main(String[] args) { // 変数の定義と初期化 int jikyuDansei = 800; int jikyuJosei = 700; int kyuryo = 0;
次は、戻り値のあるメソッドです。 //メソッドのサンプル2 public class helloWorld { // メソッドの定義 private static int pi() { return 3; } public static void main(String[] args) { int x; x = pi(); System.out.println(x); } }
なんとなく分かったところで、次はif文です。 //if文 public class helloWorld { public static void main(String[] args) { int a = 2; if (a == 1) { System.out.println("aは1"); } else { System.out.println("aは1以外"); } } }
27 :
if文は条件を判断する命令です。 >if (a == 1) { ()の中の式が正しかったら{}の中を、違ってたらelse {}の中を 実行します。 if ()の条件式の書き方 a == 1 :aが1と等しい a != 1 :aが1と等しくない(1以外) a > b a >= b a < b a <= b 他にもありますが、基本はこんな感じです。
28 :
さっきの給料計算を改造して、6000以上だったら ボーナス1000円もらえるようにしましょう。 答えは以下のとおり // メソッドの定義(給料計算メソッド) private static int kyuryoKeisan( int argJikyu, // 時給 int argJikan, // 勤務時間 int argBonus // ボーナス ) { // 給料 int kyuryo = 0; // 時給と勤務時間から給料を求め規定額以上かを判定する kyuryo = argJikyu * argJikan; if (kyuryo >= 6000) { kyuryo = kyuryo + 1000; } else { kyuryo = kyuryo; } // 求めた給料を返却 return kyuryo; }
29 :
最後はfor文です これは、繰り返しです。 //for文 public class helloWorld { public static void main(String[] args) { for (int i = 0; i < 10; ++i) { System.out.println(i); } } }
30 :
>for (int i = 0; i < 10; ++i) { 最初のint i=0 これは、繰り返しに使う変数定義です。 最初に一回だけ実行されます。 i<10 これは、繰り返しの条件です i<10の間だけ、繰り返します。 ++i これは、増分を書くところで、ループの最後に呼ばれます。 (++iというのは、i=i+1の省略形です。) まとめると、 i=0からはじまって、i=1,i=2....i=9まで繰り返すということです。 1からはじまって10までなら for (i = 1; i <= 10; ++i) または for (i = 1; i < 11; ++i) と書くといいでしょう。 どっちでもいいですが、上のほうが10回という数字に意味があるので 分かりやすいかと思います。
応用問題1の答え //for文 public class helloWorld { public static void main(String[] args) { for (int i = 0; i <= 10; ++i) { if (i == 5) { System.out.println("500"); } else { System.out.println(i); } } } }
36 :
応用問題2の答え public class helloWorld { public static void main(String[] args) { for (int i = 1; i <= 9; i = i + 2) { System.out.println(i + "の段"); for (int j = 2; j <= 8; j = j + 2) { System.out.println(i + "*" + j + "=" + (i * j)); } } } }
回答。簡単ですね。 public class helloWorld { public static void main(String[] args) { for (int i = 1; i <= 9; i = i + 2) { System.out.println(i + "の段"); for (int j = 2; j <= 8; j = j + 2) { System.out.println(i + "*" + j + "=" + (i * j)); } } } }
39 :
今日は配列をやります。 public class helloWorld { public static void main(String[] args) { int[] x = { 0, 1, 2 }; for (int i = 0; i <= 2; ++i) { System.out.println(x[i]); } } }
別の書き方をするとこうなります。 public class helloWorld { public static void main(String[] args) { int[] x = new int[3]; x[0] = 10; x[1] = 11; x[2] = 12; for (int i = 0; i <= 2; ++i) { System.out.println(x[i]); } } }
42 :
>int[] x = new int[3]; これは、xをint型の配列[]で定義して そこにint型で[3]の配列を代入するみたいな意味です。 これで、x[0],x[1],x[2]の3個の箱が出来ます。 new int[3]の3は、箱の数です。箱の番号は0から始まるので、 箱の最大番号は2になるのを理解してください。 箱の番号を表す[]の中の数字を添え字といいます。 添え字と箱の中身は別です。 x[0] = 10 というのは、0番目の箱に10を入れるということです。
答え。あってるけど何か変です。 public class helloWorld { public static void main(String[] args) { int[] x = new int[10]; for (int h = 0; h <= 9; ++h){ x[h] = h + 1; } for (int i = 0; i <= 9; ++i) { System.out.println(i + " : " + x[i]); } } }
45 :
>for (int h = 0; h <= 9; ++h){ >x[h] = h + 1; >} ループ用の変数にhを使っていますが、これはiにしたほうがいいでしょう。 一般的にループ用の変数の名前にはiが使われます。 ちなみに、 うえのループとしたのループは別々の{}で囲まれているので iも別々に定義されます。
46 :
じゃあ、逆に10〜1を入れるにはどうすればいい? 答えはこんな感じ public class helloWorld { public static void main(String[] args) { int[] x = new int[10]; for (int i = 0; i <= 9; ++i){ x[i] = 10 - i; } for (int i = 0; i <= 9; ++i) { System.out.println(i + " : " + x[i]); } } }
こんどは、新しいクラスを作ってみる 掛け算と足し算のメソッドが入ったクラスSubJavaを作る package testJava; public class SubJava { public static int kakezan( int argHidari, int argMigi ){ int kotae = argHidari * argMigi; return kotae; } public static int tasizan( int argHidari, int argMigi ){ int kotae = argHidari + argMigi; return kotae; } }
54 :
これをmainで使う場合は、以下のとおり package testJava; import testJava.SubJava; public class MainJava { public static void main(String[] args) { int kotae; kotae = SubJava.kakezan(1, 5); System.out.println(kotae); kotae = SubJava.tasizan(1, 5); System.out.println(kotae); } }
わかりやすくするために、変数でやってみる。 package testJava; public class SubJava { public static int x = 0; public int y = 0; public static int kakezan( int argHidari, int argMigi ){ int kotae = argHidari * argMigi; return kotae; } public int tasizan( int argHidari, int argMigi ){ int kotae = argHidari + argMigi; return kotae; } }
60 :
これを使うMainJavaはこんな感じ package testJava; import testJava.SubJava; public class MainJava { public static void main(String[] args) {
まちがえた、メインは以下のとおり package testJava; import testJava.SubJava; public class MainJava { public static void main(String[] args) { SubJava subJava = new SubJava(); System.out.println(subJava.goukei(1)); System.out.println(subJava.goukei(5)); System.out.println(subJava.goukei(16)); } }
66 :
合計の値をどうやって保持するか? というのが難しい?
67 :
答えはこんな感じ (goukeiをstaticにしないのは、本体を何個も作っても個別に合計を計算できるように。) package testJava; public class SubJava { public int goukei = 0; public int goukei( int argKazu ){ goukei = goukei + argKazu; return goukei; } }
68 :
さて、一応正解なのですが、たとえば、mainで subJava.goukei = 100; などとされると、合計の値がおかしくなってしまいます。 そこで、 public int goukei = 0; を private int goukei = 0; に変えます。 privateは、定義されている{}の外から見えなくなるという意味です。 定義されている{}の中やさらにその中の{}の中では見れます。 なんで、mainJavaからは、goukei という変数はみれませんが、 SubJavaのなかでは、普通に使えるというわけです。 予断ですが、変数とメソッドに同じ名前をつけています。 わかりづらいですね。やめたほうがいいです。
69 :
応用問題 本体を複数作られたとしても、大丈夫な、総合計を求めるメソッドを作りなさい。 メインはこんな感じ package testJava; import testJava.SubJava; public class MainJava { public static void main(String[] args) {
SubJava subJava1 = new SubJava(); System.out.println(subJava1.goukei(1)); System.out.println(subJava1.goukei(5)); System.out.println(subJava1.goukei(16)); SubJava subJava2 = new SubJava(); System.out.println(subJava2.goukei(1)); System.out.println(subJava2.goukei(5)); System.out.println(subJava2.goukei(16));
System.out.println(SubJava.soGoukei()); } }
70 :
答えはこんな感じ。staticを使うというのに気づけば楽勝 package testJava; public class SubJava { private int goukei = 0; private static int soGoukei = 0; public int goukei( int argKazu ){ goukei = goukei + argKazu; soGoukei = soGoukei + argKazu; return goukei; } public static int soGoukei(){ return soGoukei; } }
71 :
ちなみに、クラスも配列に出来る。 package testJava; import testJava.SubJava; public class MainJava { public static void main(String[] args) { SubJava[] subJava = new SubJava[2]; subJava[0] = new SubJava(); System.out.println(subJava[0].goukei(1)); System.out.println(subJava[0].goukei(5)); System.out.println(subJava[0].goukei(16)); subJava[1] = new SubJava(); System.out.println(subJava[1].goukei(1)); System.out.println(subJava[1].goukei(5)); System.out.println(subJava[1].goukei(16)); System.out.println(SubJava.soGoukei()); } }
72 :
ポイントは、 >SubJava[] subJava = new SubJava[2]; ここでは、配列の数を決めただけで、初期化はされていないので、 >subJava[0] = new SubJava(); 各添え字ごとに、初期化をする必要があるということ。 あとは、intとかの配列と一緒だと思ってかまわないです。
73 :
次はセッター、ゲッターの考え方を覚えましょう まずは、SubJava package testJava; public class SubJava { private int no = 0; private int jikyu = 0; public int getJikyu() { return jikyu; } public void setJikyu(int argJikyu) { jikyu = argJikyu; } public int getNo() { return no; } public void setNo(int argNo) { no = argNo; } }
74 :
>private int no = 0; >private int jikyu = 0; で変数を定義していますが、privateなのでMainJavaからはみえません そこで、 >public int getNo() { >return no; >} >public void setNo(int argNo) { >no = argNo; >} をつくってアクセスできるようにします。
75 :
MainJavaはこんな感じになります。 package testJava; import testJava.SubJava; public class MainJava { public static void main(String[] args) {
生徒がだした回答が以下のとおり うーん、確かにあってるんだけど・・・・。 package testJava; public class SubJava { private int no = 0; private int jikyu = 0; public int getJikyu() { if (jikyu >= 2000){ return 2000; } else { return jikyu; } } public void setJikyu(int argJikyu) { jikyu = argJikyu; } public int getNo() { return no; } public void setNo(int argNo) { no = argNo; } }
79 :
とりあえず、正解ということにしておいて次の問題 引数に勤務時間を入れると給料が取得できるメソッドを作りなさい。 計算式は 給料=勤務時間×時給 MainJavaはこんな感じ package testJava; import testJava.SubJava; public class MainJava { public static void main(String[] args) { SubJava tonosama = new SubJava(); tonosama.setNo(1); tonosama.setJikyu(3000); System.out.println("no:" + tonosama.getNo()); System.out.println("jikyu:" + tonosama.getJikyu()); System.out.println("kyuryo:" + tonosama.getKyuryo(8));
答えはこんな感じです・・・と、おもったら public int getKyuryo(int argJikan) { return jikyu * argJikan; }
81 :
うまくいかないですね。なぜでしょう? それは、getJikyuで2000以上かどうか見てるからです。 と、いうわけで、セットするときに2000以上だったら2000でセットするように改造しましょう。 package testJava; public class SubJava { private int no = 0; private int jikyu = 0; public int getJikyu() { return jikyu; } public int getKyuryo(int argJikan) { return jikyu * argJikan; } public void setJikyu(int argJikyu) { if (argJikyu >= 2000){ jikyu = 2000; } else { jikyu = argJikyu; } } public int getNo() { return no; } public void setNo(int argNo) { no = argNo; } }