0

他のクラスから情報を取得するこのコードがありますが、インスタンス オブジェクトごとに別のコード行を追加する必要があります。

public static int giveShipData(String shipName,int Data){
    if(shipName.equals("Player")){i = Player.getData(Data);}
    return i;
}

次のようなものを持つことは可能ですか:

public static int giveShipData(String shipName,int Data){
    i = shipName.getData(Data);
    return i;
}

独学で初心者なので、間違った用語を使用している場合は申し訳ありません。

4

3 に答える 3

2

デザインを考え直したほうがいいと思います。船の名前と船のデータがある場合は、次のような船のクラスが必要だと思います。

public class Ship {
    private String name;
    private int data;

    public Ship(String name, int data) {
        this.name = name;
        this.data = data;
    }

    public String getName() {
        return name;
    }

    public int getData() {
        return data;
    }
}

このクラスの他に、次のようなクラスが必要ですShipyard

 public class Shipyard {
    private Map<String, Ship> shipsByNameMap = new HashMap<String, Ship>();

    public void registerShipByName(String name, Ship ship){
        shipsByNameMap.put(name, ship);
    }

    public Ship getShipByName(String name){
        return shipsByNameMap.get(name);
    }
}

したがって、最初にshipyard.getShip( "Player")メソッドを呼び出してshipオブジェクトを取得するよりも、ship.getData()メソッドを呼び出して船のデータを取得することができます。

于 2012-04-08T06:22:16.330 に答える
0

あなたのコードによると、「shipName」は文字列です...そして getData() メソッドがありません。そして、なぜデータを getData() に渡すのですか...代わりに次のように書くことができます-

 i = ClassObj.getData(shipname);

メソッド getData で、「shipname」に関する情報を返します。

于 2012-04-08T05:59:52.830 に答える
0

このようなことができるかもしれません...

int[] ships = new int[3]; // 3 ships

public void populateShips(){
  for (int i=0;i<ships.length;i++){
    ships[i] = giveShipData(shipname,data);
    }
  }

public int giveShipData(String shipName,int data){
    return shipName.getData(data);
}

これにより、任意の数の船を作成できます。必要な数の船にships[]なるように配列のサイズを増やすだけです。

これはあなたが求めているものですか?

于 2012-04-08T05:55:01.703 に答える