#java #sorting #arraylist #java.util.scanner
Вопрос:
Я написал код ниже, где из инициализированного списка стран метод вернет все страны, у которых долгота gt;= 5, код работает, но теперь я хочу, чтобы метод возвращал названия стран, которые близки к строке D в диапазоне 5 градусов долготы.
Я попытался реализовать сканер, как показано ниже, но я все еще получаю страны с долготой выше 5. Как я могу заставить метод возвращать названия стран на основе пользовательского ввода.
ArrayListlt;Stringgt; CountriesDistance= new ArrayListlt;gt;(); Scanner scanner= new Scanner(System.in); System.out.print("Enter The Name of a Country: "); String D= scanner.nextLine(); for(Country country : Countries) if (!CountriesDistance.contains(country.CountryName.equals(D)) amp;amp; country.getLongitude() gt;= 5) CountriesDistance.add(country.CountryName); System.out.println(CountriesDistance);
Ответ №1:
Исправьте свое утверждение «если».
Вы пишете следующее …
if (!CountriesDistance.contains(country.CountryName.equals(D)) amp;amp; country.getLongitude() gt;= 5)
В «стране.Имя страны.равно(D)» часть возвращает значение true или false. Таким образом, вы проверяете, не содержит ли CountriesDistance true/false и не является ли долгота страны больше или равна 5.
Я думаю, ты мент:
if(!CountriesDistance.contains(inputCountryAsString) amp;amp; (country.getLongitude() lt;= baseCountry.getLongitude() 5 amp;amp; country.getLongitude() gt;= baseCountry.getLongitude() - 5))
Я инициализировал базовую страну следующим образом:
Country baseCountry = getCountryByName(countries, inputCountry); public static Country getCountryByName(Countries countries, String name) { Country country = null; for (Country c : Countries) { if (c.getName().equals(name)) country = c; } return country; }
В этом случае я получил название страны, вызвав getName (), которое я реализовал следующим образом:
class Country { String countryName; public String getName() { return countryName; } }
Комментарии:
1. Я сделал это, единственное, что осталось, — как я могу заставить метод возвращать список стран с более высокой долготой, чем строка D, введенная пользователем
2. Итак, страны теперь напечатаны правильно?
3. на самом деле он возвращает мне только строку D сейчас, он не возвращает никаких других стран
4. Хорошо, возможно, теперь я понимаю ваш вопрос. Удалите «страна. Имя страны.равно(D) amp;amp; » часть в операторе if. (Я исправил это в ответе.)
5. Сделал, я сделал это