создайте дополнительный список элементов на основе пользовательского ввода

#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. Сделал, я сделал это