オブジェクト指向(基本4)

Java

お題

一般クラス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("]");
	}
}
Java
スポンサーリンク
シェアする
mjpurinをフォローする

コメント

タイトルとURLをコピーしました