public static void main(String[] args) {
RpgCharacter[] party = new RpgCharacter[2];
party[0] = new RpgHero("太郎");
party[1] = new RpgWizard("二郎");
System.out.println("こんにちは、良いパーティですね。");
for (int i = 0; i < party.length; i++) {
System.out.println(party[i].getName() + "さん");
}
}
public abstract class RpgCharacter {
/** 名前 */
protected String name;
/** HP */
protected int hp;
/** MP */
protected int mp;
/** コンストラクタ */
public RpgCharacter(String name) {
this.name = name;
this.hp = 10;
this.mp = 0;
}
/** たたかう */
public abstract void attack(RpgCharacter character);
/** にげる */
public void escape() {
System.out.println(this.name + "は逃げ出した");
}
そうすると初めにも書きましたが、このようなコードでの処理が実行できます。
public static void main(String[] args) {
RpgCharacter[] party = new RpgCharacter[2];
party[0] = new RpgHero("太郎");
party[1] = new RpgWizard("二郎");
System.out.println("こんにちは、良いパーティですね。");
for (int i = 0; i < party.length; i++) {
System.out.println(party[i].getName() + "さん");
}
}
public class Wizard extends Character {
public void heal(Hero hero) {
hero.setHp(hero.getHp() + 10);
System.out.println(hero.getName() + "のHPを10ポイント回復した");
}
}
「書き方」
public abstract class クラス名{
// 通常クラスと変わらないが抽象メソッドを作る必要がある
public abstract 返却値 メソッド名(引数);
}
<Characterクラス>
public abstract class Character {
// java.lang.Character;
private String name;
private int hp;
private int mp;
/** 抽象メソッド */
public abstract void attack(Matango m);
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the hp
*/
public int getHp() {
return hp;
}
/**
* @param hp the hp to set
*/
public void setHp(int hp) {
this.hp = hp;
}
/**
* @return the mp
*/
public int getMp() {
return mp;
}
/**
* @param mp the mp to set
*/
public void setMp(int mp) {
this.mp = mp;
}
}
public class Wizard extends Character {
/** 戦う */
@Override
public void attack(Matango m) {
System.out.println(getName() + "の攻撃");
m.hp -= 2;
System.out.println("2ポイントのダメージをあたえた!");
}
public class HelloWorld {
public static void main(String[] args) {
// 変数の宣言
int seisu;
// 変数の初期化
double shosu = 0.0;
// 変数の初期化
String moji = "文字列";
}
}
九九の二の段
<Code.10>
public static void main(String[] args) {
int a = 2;
int x = 1;
System.out.println("2 x 1 = " + a * x);
x++;
System.out.println("2 x 2 = " + a * x);
x++;
System.out.println("2 x 3 = " + a * x);
x++;
System.out.println("2 x 4 = " + a * x);
x++;
System.out.println("2 x 5 = " + a * x);
x++;
System.out.println("2 x 6 = " + a * x);
x++;
System.out.println("2 x 7 = " + a * x);
x++;
System.out.println("2 x 8 = " + a * x);
x++;
System.out.println("2 x 9 = " + a * x);
}
public static void main(String[] args) { // ここからメインメソッドのブロック
int a = 0;
if (a == 1) { // ここからIFのブロック
int num = 0;
num++;
} else { // ここからelseのブロック
num = 10; // ここでエラー
}
}
public class HelloWorld {
/** フィールド */
private int field;
/** メソッド */
public void method(String hikisu) {
int a = 0;
int num = 0;
if (a == 1) {
num++;
} else {
num = 10;
}
}
}
if (論理式A) {
// 論理式Aがtrueときの処理
} else if (論理式B) {
// 論理式Bがtrueときの処理
} else {
// 何かしらの処理
}
switch文は以下の通りです。
switch (変数) {
case XX:
// 変数がXの時のケース
break;
case YY:
// 変数がYの時のケース
break;
default:
// 変数が上記以外のとき
}
<Code.20>をswitch文に書き換えると下のようになります。
public static void main(String[] args) {
int num = 10;
switch (num) {
case 10:
System.out.println("No8");
break;
case 20:
System.out.println("No9");
break;
default:
System.out.println("それ以外");
}
}
ポイント
このプログラムの
break;
に注目して下さい。この分がないとどうなるでしょうか?
<Code.21>
switch (num) {
case 8:
System.out.println("No8");
case 9:
System.out.println("No9");
default:
System.out.println("それ以外");
}
if (num == 0) {
break;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("今日の運勢を占います。占う回数を入力してください。");
int num = 0;
while(true) {
num = scan.nextInt();
if (num > 3) {
System.out.println("3以下の値を入力してください");
continue;
}
break;
}
System.out.println(num + "回占います。");
int sisu = 0;
for (int i = 0; i < num; i++) {
int unsei = new Random().nextInt(3);
if (unsei == 0) {
System.out.println((i + 1) + "回目: 大吉");
sisu += 4;
} else if (unsei == 1) {
System.out.println((i + 1) + "回目: 中吉");
sisu += 3;
} else if (unsei == 2) {
System.out.println((i + 1) + "回目: 吉");
sisu += 2;
} else {
System.out.println((i + 1) + "回目: 凶");
sisu += 1;
}
}
System.out.println("sisu: " + sisu);
int un = new BigDecimal(sisu).divide(new BigDecimal(num * 4), 2, RoundingMode.DOWN).multiply(new BigDecimal(100)).intValue();
System.out.println("un: " + un);
System.out.println("今日の運勢は、" + un + "%好調です。");
}
これを改造するもよし、アイディアを出して別のものにするもよし、
遊んでみてください。
ポイント
今回使用したループ文はfor文といって下のように書きます。
for (カウンタの初期化; ループする論理式; ループした後の処理) {
// 何かしらの処理
}
これは、どのような意味かというとfor int i = 0; i < 10; i++) { .. }<code>とコードを書いたときの場合は、int(整数)型の変数を0で初期化(</code>int i = 0<code>)して、この変数が10よりも小さい(i < 10)間、ループするたびにあとの処理(</code>i++)を行います。
ループ文の練習です、下のような問題があります。
問題1「4回ループするfor文を作ってください」
<for文の場合>
for (int i = 0; i < 5; i++) {
System.out.pprintln("Hello" + i);
}
処理の順序は下のようになります。
int型(整数型)の変数iを0で初期化
i = 0なので論理式「i < 5」の評価後の値は「0 < 5」でtrue
論理式の値がtrueなので「{}」の中の処理を行う
「Hello0」を表示した後に
i++
の処理を行う
iが1になったので、論理式
i < 5
の評価の値は「1 < 5」でtrue
「Hello1」を表示した後に
i++
の処理を行う
iが2になったので、論理式
i < 5
の評価の値は「2 < 5」でtrue
「Hello2」を表示した後に
i++
の処理を行う
iが3になったので、論理式
i < 5
の評価の値は「3 < 5」でtrue
「Hello3」を表示した後に
i++
の処理を行う
iが4になったので、論理式
i < 5
の評価の値は「4 < 5」でtrue
「Hello4」を表示した後に
i++
の処理を行う
iが5になったので、論理式
i < 5
の評価の値は「5 < 5」でfalse
論理式の値がfalseになったのでループを終了する
<while文の場合>
int i = 0;
while(i < 5) {
System.out.println("Hello" + i);
i++;
}
public class HelloWorld {
public static void main(String[] args) {
// 変数の宣言
int seisu;
// 変数の初期化
double shosu = 0.0;
// 変数の初期化
String moji = "文字列";
}
}
変数の宣言は値を代入しません。
int seisu;
、そして、初期化は値を代入します
int double shosu = 0.0;
上記ひと通りの内容を説明した動画が、以下になります。
四則計算の実装
次は、四則計算をプログラムで行います。上記の計算でも行いましたが、今回は変数を使用して実行します。
九九(2の段)を算出、表示する
サンプルコードは以下になります。
ポイント5
<Code.10>
public static void main(String[] args) {
int a = 2;
int x = 1;
System.out.println("2 x 1 = " + a * x);
x++;
System.out.println("2 x 2 = " + a * x);
x++;
System.out.println("2 x 3 = " + a * x);
x++;
System.out.println("2 x 4 = " + a * x);
x++;
System.out.println("2 x 5 = " + a * x);
x++;
System.out.println("2 x 6 = " + a * x);
x++;
System.out.println("2 x 7 = " + a * x);
x++;
System.out.println("2 x 8 = " + a * x);
x++;
System.out.println("2 x 9 = " + a * x);
}