-2

私はJavaでこの特定の問題に問題を抱えています。私は立ち往生しています!ユーザーからデータ数を入力してから、気温と都市名をそれぞれ入力してもらいます。ただし、ユーザーは特定の都市に対して複数の温度を入力する可能性があると言われています。たとえば、ウィーン23(C)ベルリン12パリ15ベルリン9ベルリン10パリ10

特定の順序ではありません。この部分を2つの1Dアレイで実行しましたが、プログラムでは、すべての都市の平均気温、最高気温と最低気温を計算するように求められます(明らかに、最低気温と最低気温が1つしかない場合、最小/最大/平均は同じになります。街)。

都市の配列を調べて、特定の都市がそこにリストされている回数を確認し、それぞれの温度を見つけて平均/最小/最大を見つける必要があることを考えると、この部分をどのように行うべきかわかりません。コンセプトはありますが、Javaでは作れません。何か考え/提案はありますか?とても有難い!

4

2 に答える 2

1

を変更する必要がありますData Structure。関連する属性に2つの異なる配列を使用することはお勧めできません。

むしろ、都市とそのすべての気温の間のマッピングを維持します。次のように作成する必要がありますMap:-

Map<String, List<Double>> temperatureMap = new HashMap<String, List<Double>>();

次に、各都市について、各都市のを使用して平均を簡単に計算できList<Double>ます。

于 2012-11-25T12:47:12.827 に答える
1

次を使用できます。

 Map<City,List<Temprature>>();

ここに例があります:

public class Temp {
Map<String,List<Double>> temp;

public Temp() {
    this.temp = new HashMap<String, List<Double>>();
}

private void insertTemperature(String city, double t) {

    if (temp.containsKey(city)) {
        List<Double> list = temp.get(city);
        list.add(t);
    } else {
        List<Double> list = new ArrayList<Double>();
        list.add(t);
        temp.put(city,list);
    }
}


private double calcAVG(String city) {
    List<Double> t = temp.get(city);
    double ttSum = 0;
    for (Double tt : t) {
        ttSum += tt;
    }

    return ttSum/t.size();
}

}

于 2012-11-25T12:52:40.397 に答える