2017-04-06 58 views
0

返回類型爲「ProvinceTerritory」。 這是類名 getPopulation()和getName()是省級領土內部的訪問者。 另外省份是ArrayList的名稱,其中包含所有城市和他們的人口。我試圖找到最大人口使用forech循環,然後讓程序返回該單元格的名稱。返回人口最多的城市名稱

public ProvinceTerritory getHighestPopulation(){ 
int max = provinces.get(0).getPopulation(); 
for(ProvinceTerritory pt3 : provinces){ 
    if(pt3.getPopulation() > max){ 
     max = pt3.getPopulation(); 
    } 

} 
return ??; 
} 
+0

做你的'ProvinceTerritory'類有一個'name'屬性或類似的東西? –

+0

你的問題有點令人困惑。你想返回這個名字,但是你的返回類型是'ProvinceTerritory'。無論哪種方式,只需在foreach循環之前聲明一個變量,並將其設置在if語句內,就像現在使用'max'一樣,然後返回該值。 –

+0

創建ProvinceTerritory的實例,並在條件匹配並更新時返回。 –

回答

0

不記得最多的人口,有最大的人口記住ProvinceTerritory

public ProvinceTerritory getHighestPopulation() { 
    ProvinceTerritory max = null; 
    for (ProvinceTerritory pt3 : provinces) 
     if (max == null || pt3.getPopulation() > max.getPopulation()) 
      max = pt3; 
    return max; 
} 

或Java 8個流版本:

public ProvinceTerritory getHighestPopulation() { 
    return provinces.stream() 
        .max(Comparator.comparingInt(ProvinceTerritory::getPopulation)) 
        .orElse(null); 
} 
+0

假設該方法應該返回一個字符串作爲問題關於該單元的名稱的問題 –

+0

考慮到OP正在調用'provinces.get(0)',您可以調用'Optional.get()'。 – shmosel

+0

@shmosel真的,但我想在這裏的兩個版本行爲*相同*,所以我做了第二個行爲像第一個。問題代碼在空列表上拋出「IndexOutOfBoundsException」這一事實很可能是無意的,即OP沒有考慮這種情況。缺少* defined *行爲可以讓我的行爲有所不同。 ;-) – Andreas

0

您需要跟蹤人口最多的省份區域,以便您可以將其退回。

public ProvinceTerritory getHighestPopulation(){ 
    int max = provinces.get(0).getPopulation(); 
    ProvinceTerritory result = provinces.get(0); 
    for(ProvinceTerritory pt3 : provinces){ 
     if(pt3.getPopulation() > max){ 
      max = pt3.getPopulation(); 
      result = pt3; 
     } 
    } 
    return result; 
} 
+0

你將需要初始化'result'。 – shmosel

+0

編譯錯誤:*本地變量結果可能未初始化* – Andreas

+0

謝謝,我更正了它 –