2016-11-18 5 views
0

Я работаю над домашним заданием о массивах и while loop in java. Вопрос заключается в создании метода, который называется public int getPopulation(String province), который возвращает население провинции. Если такой области нет, верните константу с именем NO_SUCH_PROVINCE, которая является int, установленной в -1. Но я не могу получить то, что хочу.Как получить население провинции

public class Country { 
public static final int ON = 0; 
public static final int QC = 1; 
public static final int BC = 2; 
public static final int AB = 3; 
public static final int MB = 4; 

public static final int NO_SUCH_PROVINCE = -1; 

private String[] provinces; 
private int[] population; 

public Country() { 
    provinces = new String[5]; 
    provinces[0] = "Ontario"; 
    provinces[1] = "Quebec"; 
    provinces[2] = "British Columbia"; 
    provinces[3] = "Alberta"; 
    provinces[4] = "Manitoba"; 

    population = new int[5]; 
    population[ON] = 12851821; 
    population[QC] = 7903001; 
    population[BC] = 4400057; 
    population[AB] = 3645257; 
    population[MB] = 1208268; 
} 
public int getPopulation(String province) { 
    int i = 0; 
    int temp = 0; 
    while(i < provinces.length) { 
     if(province == provinces[i]) { 
      temp = population[i]; 
     }else { 
      temp = NO_SUCH_PROVINCE; 
     } 
     i++; 
    } 
    return temp; 
} 
+0

Что вы имеете в виду, когда говорите, что не получаете желаемого результата? Есть ли ошибка? Какой результат вы ожидаете? – PakkuDon

+0

'if (province.equals (провинция [i]))' –

+0

@ScaryWombat У вас есть этот дубликат на скоростном наборе? Вы избили меня до этого;) –

ответ

2

Проблема с вашим алгоритмом поиска. Он продолжает идти после того, как находит решение, а затем перезаписывает правильное значение. Это здесь, когда оно находит значение, немедленно возвращает значение и оставляет метод. Если он не может найти какое-либо значение, он возвращает NO_SUCH_PROVINCE.

Другая проблема заключается в том, что Scary Wombat отметил, что ваш код не сравнивает String s правильно, чтобы найти соответствие.

public int getPopulation(String province) { 
    for (int i = 0; i < provinces.length; i++) { // For objects, always use .equals() 
     if (province.equals(provinces[i])) { return population[i]; } 
    } 
    return NO_SUCH_PROVINCE; 
} 

Конечно, это было бы гораздо проще, если бы можно было бы просто использовать HashMap<String, Integer>, который хранит все данные, такие как словарь.

Смежные вопросы