さて、私はタイプ<String, Ranged>
(Rangedは別のクラスです)の静的HashMapを含むWeaponListというクラスを持っています。RangedクラスはWeaponという別のクラスも拡張しています。Java - HashMapの一部の項目のみを使用できるようにするクラスメソッドの条件を記述します。
私はスカウトと呼ばれる別のクラスを持っています。スカウトは、武器(霊長類が覚えている)とポイントのintの構成です。また、ScoutSquadクラスはgetメソッドとsetメソッドを持つScoutsの集まりであることを指摘しておきます。あなたはスカウト「ボルトピストル」である各スカウトのデフォルト遠隔武器オブジェクトと、デフォルトのポイントをinstaniateとき
だから、メインプログラムでは、あるスカウトクラスの今13
は、アップグレードするオプションをtheresのあなたの武器をrangedUpgrade(Ranged ranged)メソッドで呼び出します。したがって、このコード行を使用するメインプログラムでは、scouts.getScout(5).rangedUpgrade(WeaponList.getRanged("Shotgun"));
はスカウトをインデックス5で正常にアップグレードし、新しい武器とスカウトの新しいポイントを表示します(各武器に関連付けられているポイントがあります)。
現在、 WeaponListクラスHashMap内の任意の遠回りの武器に移動します。 ScoutがHashMap内の特定のRanged武器にしかアップグレードできないようにしたいと思います。私はすでにif文で条件を設定しようとしましたが、これまでのところ成功していません。 (Scoutクラスの27行目〜35行目)
すべてのrelavantクラスにコードを提供し、誰かがこれを助けることを願っています。
ありがとうございました。
はWeaponListクラス
package armoury1;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import troops.scouts.Scout;
public class WeaponList
{
static Map<String, Ranged> rangedlist = new HashMap<String, Ranged>()
{{
put("Bolter", new Ranged2H("Bolter", 1));
put("Bolt Pistol", new Ranged("Bolt Pistol", 1));
put("Flamer", new Ranged2H("Flamer", 1));
put("Meltagun", new Ranged2H("Meltagun", 1));
put("Plasma Gun", new Ranged2H("Plasma Gun", 1));
put("Plasma Pistol", new Ranged("Plasma Pistol", 10));
put("Shotgun", new Ranged2H("Shotgun", 10));
put("Sniper Rifle", new Ranged2H("Sniper Rifle", 5));
put("Assault Cannon", new Ranged2H("Assault Cannon", 10));
put("Cyclone Missle Launcher", new Ranged2H("Cyclone Missle Launcher", 10));
put("Heavy Bolter", new Ranged2H("Heavy Bolter", 10));
put("Heavy Flamer", new Ranged2H("Heavy Flamer", 10));
put("Assault Cannon", new Ranged2H("Lascannon", 10));
put("Missle Launcher", new Ranged2H("Missle Launcher", 10));
put("Multi Melta", new Ranged2H("Multi Melta", 10));
put("Plasma Cannon", new Ranged2H("Plasma Cannon", 10));
}};
public static Ranged getRanged(String index)
{
return rangedlist.get(index);
}
public static Map<String, Ranged> getRangedList()
{
return rangedlist;
}
}
スカウトクラスは
package troops.scouts;
import armoury.Wargear;
import armoury1.Melee;
import armoury1.Ranged;
import armoury1.Weapon;
import armoury1.WeaponList;
public class Scout
{
private Weapon ranged, melee;
private int points;
//DEFAULT SCOUT
public Scout()
{
ranged = new Ranged("Bolt Pistol", 0);
melee = new Melee("Close Combat Weapon", 0);
points = 13;
points = points + ranged.getWeaponPoints() + melee.getWeaponPoints();
}
public void rangedUpgrade(Ranged ranged)
{
if (ranged.equals(WeaponList.getRanged("Shotgun")));
{
this.ranged = ranged;
points = points + ranged.getWeaponPoints();
}
else
System.out.println("Can not have this weapon");
}
public void meleeUpgrade(Melee melee)
{
this.melee = melee;
points = points + melee.getWeaponPoints();
}
public Weapon getRangedUpgrade()
{
return ranged;
}
public Weapon getMeleeUpgrade()
{
return melee;
}
@Override
public String toString()
{
return "|| " + "Ranged Weapon: " + ranged + " || " + "Melee Weapon: " + melee + " || " + "Points: " + points;
}
}
メインプログラムは
package main;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import armoury1.Melee;
import armoury1.Ranged;
import armoury1.Weapon;
import armoury1.WeaponList;
import troops.scouts.Scout;
import troops.scouts.ScoutSergeant;
import troops.scouts.ScoutSquad;
public class ArmyBuilderDemo
{
public static void main(String[] args) throws Exception
{
ScoutSquad scouts = new ScoutSquad("Squad 1");
Scanner input = new Scanner(System.in);
System.out.println("Enter the squad size: ");
int size = input.nextInt();
for (int i = 0; i < size; i++)
scouts.addScout(new Scout());
System.out.println(scouts.getScoutSquad());
scouts.getScout(5).rangedUpgrade(WeaponList.getRanged("Shotgun"));
scouts.getScout(5).meleeUpgrade(WeaponList.getMelee(3));
System.out.println(scouts.getScoutSquad());
input.close();
}
}
遠距離クラス(拡張武器)
package armoury1;
import java.util.ArrayList;
import java.util.List;
import troops.scouts.Scout;
public class Ranged extends Weapon
{
public Ranged(String name, int points)
{
super(name, points);
}
}
???:
として、このメソッドのコードを変更してくださいそのような***行がないことを覚えておいてください。ここでは私たちのために27〜35 ***の線があります。 –
@スカイプそれらのすべてにアップグレードすることができます。ですから、ScoutクラスのupgradeRangedメソッドで条件を設定する必要があります – GR412
Rangedクラスのソースコードを提供してください。 –