お題
一般クラスGunとアプリケーションクラスGunAppを作成し、以下の処理を実現する。
実行例
実行例の中の
———->
は弾丸を発射している様子を表している。
(操作)1:情報を見る,2:発射する,3:リロードする, 0:終了>>1
[P38, ************]
(操作)1:情報を見る,2:発射する,3:リロードする, 0:終了>>2
---------->
(操作)1:情報を見る,2:発射する,3:リロードする, 0:終了>>1
[P38, ***********_]
(操作)1:情報を見る,2:発射する,3:リロードする, 0:終了>>2
---------->
(操作)1:情報を見る,2:発射する,3:リロードする, 0:終了>>1
[P38, **********__]
(操作)1:情報を見る,2:発射する,3:リロードする, 0:終了>>3
リロードした!
(操作)1:情報を見る,2:発射する,3:リロードする, 0:終了>>1
[P38, ************]
(操作)1:情報を見る,2:発射する,3:リロードする, 0:終了>>2
---------->
(操作)1:情報を見る,2:発射する,3:リロードする, 0:終了>>1
[P38, ***********_]
(操作)1:情報を見る,2:発射する,3:リロードする, 0:終了>>0
終了
手順
◯新規ファイルGunApp.javaを作成する。内容は以下
public class GunApp {
public static void main(String[] args) {
}
}
◯GunAppクラスの下にGunクラスを作成する。記述は以下
public class GunApp {
public static void main(String[] args) {
}
}
class Gun{
}
以下はGunクラスに記述していくこと
◯フィールド変数
ガンの名前 String name;
ガンの最大装弾数 int maxBullet;
現在の装弾数 int bullet;
◯コンストラクタ
1. 引数2つのコンストラクタ -> String name と int maxBulletを引数に受取
this.nameとthis.maxBullettとthis.bulletを初期化する。この際、this.bulletはmaxBulletと同じにすること
2.引数なしのコンストラクタ->名前をP38 最大装弾数12,装弾数12で初期化する。この際、1のコンストラクタを呼び出すようにすること
◯メソッド(メソッドの挙動は実行例を参考にすること)
void shot() 弾を発射する。ただし、弾がないときは[弾切れだ!]と表示する
void reload() 弾を最大装弾数にセットする。
void displayInfo() 現在のガンの情報を表示する。
解答例
import java.util.Scanner;
public class GunApp {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Gun g1 = new Gun();
while(true) {
System.out.print("(操作)1:情報を見る,2:発射する,3:リロードする, 0:終了>>");
int select = sc.nextInt();
switch(select) {
case 1 -> g1.displayInfo();
case 2 -> g1.shot();
case 3 -> g1.reload();
default -> {System.out.println("終了");return;}
}
}
}
}
class Gun{
String name;
int maxBullet;
int bullet;
public Gun(String name,int maxBullet) {
this.name=name;
this.maxBullet=maxBullet;
this.bullet=maxBullet;
}
public Gun() {
this("P38",12);
}
public void shot() {
if(this.bullet <= 0) {
System.out.println("弾切れだ!");
return;
}
System.out.println("---------->");
this.bullet--;
}
public void reload() {
this.bullet = this.maxBullet;
System.out.println("リロードした!");
}
public void displayInfo() {
System.out.print("[");
System.out.print(this.name+", ");
for(int i=0;i<this.maxBullet;i++) {
System.out.print(i<this.bullet?"*":"_");
}
System.out.println("]");
}
}
コメント