2

まず、これは課題なので、コード化された回答よりもヘルプを探しています (ごまかしたくない!)。私の課題は、駅の列車/鉄道ネットワークを処理するプログラムを作成することです。私が立ち往生しているセクションは、ステーションとその接続を追加し、これらの接続を文字列の配列リストとして返します。これまでのコードと、割り当てからの抜粋 (現在のセクションに関連するもの) を以下に含めました。私は週末を通してこのビットに苦労してきたので、どんな助けでも大歓迎です.

編集する必要があるのは、"MyNetwork" クラスのインターフェイスの実装だけです。私はぐるぐる回っていると感じただけで、右足で降りることさえできなかったのでしょうか?

割り当てから;

Network インターフェイスを実装するクラス MyNetwork を作成します。

このクラスの getConnections メソッドは、fromStation 引数に直接接続されているステーションのみを含む配列を返す必要があります。ヒント 1: HashMap を使用してこれを行うことができます。キーは文字列 (ステーションを表す) であり、値は文字列の ArrayLists (直接接続されているステーションを表す) です。

ヒント 2: getConnections メソッドは文字列の配列を返しますが、HashMap の値は文字列の ArrayList である方がよいでしょう

インターフェイス;

public interface Network {

    /**
     * Add a station to the network.
     * @param station The station to be added.
     */
    public void addStation(String station);

    /**
     * Add a direct connection from one station to another.
     * @pre both fromStation and toStation have already been added by the method
     * addStation.
     * @param fromStation The station from which the connection begins. 
     * @param toStation The station at which the connection ends.
     */
    public void addConnection(String fromStation, String toStation);

    /**
     * Get a list of all stations directly connected to a given station.
     * @pre fromStation has been added to the network by the method addStation.
     * @param fromStation
     * @return A list of all the stations to which there is a direct connection
     * from fromStation. 
     */
    public String[] getConnections(String fromStation);

    /**
     * Search for a station in the network.
     * @param station Station to be searched for,
     * @return true if the Station exists in the network, false otherwise.
     */
    public boolean hasStation(String station);

    /**
     * Get all stations in the network.
     * @return An array containing all the stations in the network, with no
     * duplicates.
     */
    public String[] getStations();

実装:

public class MyNetwork implements Network {

    @Override
    public void addStation(String station) {

        ArrayList<String> Stations = new ArrayList<>();
        Stations.add(station);
    }

    @Override
    public void addConnection(String fromStation, String toStation) {

        Map<String,String> Connections = new HashMap<>();
        Connections.put(fromStation, toStation);
    }

    @Override
    public String[] getConnections(String fromStation) {
        return null; // dummy value!

    }

    @Override
    public boolean hasStation(String station) {
        return false; // dummy value!
    }

    @Override
    public String[] getStations() {
        return null; // dummy value!
    }
}
4

1 に答える 1

0

ネットワークには、1 つまたは複数のインスタンス フィールドを使用して状態が必要です。

そのままでは、状態はありません。各メソッドは、List または Map 型のローカル変数を作成し、この List または Map に何かを追加して、戻ります。そのため、リストまたはマップは直接範囲外になり、ガベージ コレクションが行われます。

private Map<String, List<String>> stations = new HashMap<>();

// now all your methods should use the above map.

http://docs.oracle.com/javase/tutorial/java/javaOO/classes.htmlを参照してください。

于 2014-02-02T15:06:36.330 に答える