私は2つのクラス、持っているFighter
クラスとPlayer
クラスを。Player
クラスが含まれているArrayList
と呼ばれるfleet
プレイヤーの船が移入されています。
プレイヤーの艦隊に船を問題なく追加できますが、プレイヤーの艦隊に戦闘機が存在するかどうかを確認しようとすると、「」というエラーが表示されますFighter cannot be resolved to a variable
。
なぜ戦闘機を艦隊に追加できるのか混乱していますが、戦闘機が艦隊に存在するかどうかを確認できません。
Fighter.java
public class Fighter extends Ship {
public Fighter(){
super(9,1,1); //Sets attack and defense values
}
}
Player.java
import java.util.ArrayList;
import java.util.Scanner;
public class Player {
ArrayList<Ship> fleet = new ArrayList<Ship>();
public void takeAHit(){
if (fleet.contains(Fighter)){ //Error happens here
System.out.println("Fighter found");
}
}
public void buildFleet(){
Scanner userInput = new Scanner(System.in);
System.out.println("How many fighters?");
int fighters = Integer.parseInt(userInput.next());
while (fighters > 0){
fleet.add(new Fighter());
fighters--;
}
userInput.close();
}
}
Core.java
public class Core {
public static void main(String[] args) {
Player p1 = new Player();
p1.buildFleet();
p1.takeAHit();
}
}
残念ながら、contains
メソッドにはクラス自体ではなく、クラスのインスタンスが必要です。
また、クラスを参照する.class
には、名前に追加する必要があります。
私が考えることができる最善の解決策は、次のようなinstanceof
キーワードを使用するメソッドを作成することです。
public boolean isFighterInFleet() {
for(Ship ship : this.fleet)
if(ship instanceof Fighter)
return true;
return false;
}
次に、以下を使用します。
if (isFighterInFleet()){
の代わりに
if (fleet.contains(Fighter)){
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加