java - 根据用户输入创建元素的子列表
问题描述
我编写了下面的代码,该方法将从初始化的国家列表中返回所有经度 >= 5 的国家,该代码有效,但现在我希望该方法返回接近字符串 D 的国家/地区的名称在经度 5 度范围内。
我尝试实现如下所示的扫描仪,但我仍然得到经度高于 5 的国家/地区。如何使该方法根据用户输入返回国家/地区的名称。
ArrayList<String> CountriesDistance= new ArrayList<>();
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)) && country.getLongitude() >= 5)
CountriesDistance.add(country.CountryName);
System.out.println(CountriesDistance);
解决方案
更正您的 if 语句。
您正在写以下...
if (!CountriesDistance.contains(country.CountryName.equals(D)) && country.getLongitude() >= 5)
“country.CountryName.equals(D)”部分返回真或假。因此,您正在检查 CountryDistance 是否不包含 true/false 以及该国家/地区的经度是否大于或等于 5。
我猜你说:
if(!CountriesDistance.contains(inputCountryAsString) && (country.getLongitude() <= baseCountry.getLongitude() + 5 && country.getLongitude() >= baseCountry.getLongitude() - 5))
我像这样初始化了baseCountry:
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;
}
}
推荐阅读
- mariadb - 增加 mariaDB 中索引键的最大字符数限制
- amazon-s3 - Rails 5.1.4 主动存储 MissingModelIdError
- c# - 数据表与 c# SerializeObject Datatable 绑定
- git - git status 仍然说“你的分支领先于
由 N 次提交。” 在 git rebase 之后 - json - 如何在你已经获得的东西上使用 Laravel Eloquent ::with()?
- android - Android Studio - 如何管理 onBackPressed 事件?
- c# - Acumatica API:将 Activity 或 Note 实体添加/附加到另一个实体(即客户、联系人或机会)
- r - R - 按索引着色绘图点
- php - 如何在 Laravel 中获取特定列 [Maatwebsite/Laravel-Excel]
- python - 简单矩阵乘法中的内存减少