根据用户输入创建元素的子列表

create a sub list of elements based on user input

提问人:Aimex 提问时间:10/28/2021 最后编辑:azroAimex 更新时间:10/28/2021 访问量:149

问:

我在下面编写了代码,从初始化的国家/地区列表中,该方法将返回经度为 >= 5 的所有国家/地区,该代码有效,但现在我希望该方法返回在经度 5 度范围内接近字符串 D 的国家/地区的名称。

我尝试如下图所示实施扫描仪,但我仍然得到经度高于 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);
java 排序 arraylist java.util.scanner

评论


答:

0赞 StackOverflow 10/28/2021 #1

更正 if 语句。

你正在写以下...

if (!CountriesDistance.contains(country.CountryName.equals(D)) && country.getLongitude() >= 5)

“国家。CountryName.equals(D)“ 部分返回 true 或 false。因此,您正在检查 CountriesDistance 是否不包含 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;
    }
}

评论

0赞 Aimex 10/28/2021
我这样做了,唯一剩下的就是如何使该方法返回经度高于用户输入的字符串 D 的国家/地区的列表
0赞 StackOverflow 10/28/2021
那么,国家/地区现在打印正确了吗?
0赞 Aimex 10/28/2021
实际上它现在只将字符串 D 返回给我,它不会返回任何其他国家/地区
0赞 StackOverflow 10/28/2021
好吧,也许我现在明白你的问题了。删除“国家/地区。CountryName.equals(D) & “部分。(我在回答中更正了它。
0赞 Aimex 10/28/2021
做完了,我做到了