首页 > 解决方案 > If Else 语句逻辑执行

问题描述

问题所在。此行应检查第 3 个索引是否包含字符,并且不应包含单词north 和america。

   else if ( salida[3].matches("[a-zA-Z]+") && !salida[3].equals("North") ) { // not working correctly
                    if (  !salida[3].equals("America")) {
                    salida1 = salida1 + salida[0] + " " + salida[1] + " " + salida[2] + " " + salida[3] +  ",";     

上面的代码应该为下面数组数据的第 4 行运行

[United, States, 1,527,664, 90,978, North, America]
[Canada, 77,002, 5,782, North, America]
[Turks, and, Caicos, 12, 1, North, America]
[St., Vincent, &, Grenadines, 17, 0, North, America]

这是我目前得到的字符串输出,它没有将数组的第三个索引添加到字符串中

United States,Canada ,Mexico ,Dominican Republic,Panama ,Honduras ,Guatemala ,Cuba ,El Salvador,Costa Rica,Jamaica ,Haiti ,Martinique ,Guadeloupe ,Bermuda ,Trinidad and,Aruba ,Bahamas ,Cayman Islands,Barbados ,Sint Maarten,Saint Martin,Nicaragua ,Antigua and,Grenada ,Belize ,Saint Lucia,St. Vincent,Curaçao ,Dominica ,Saint Kitts,Turks and,Montserrat ,Greenland ,British Virgin,Saint Barthelemy,Caribbean Netherlands,Anguilla ,Saint Pierre,

输入国家显示数据:

这是我的全部代码

public String setCountriesList() {
    String salida1 = "";
    try {
        Document doc = Jsoup.connect("https://www.worldometers.info/coronavirus/countries-where-coronavirus-has-spread/").get();
        Elements tr = doc.select("tr");
        String [] na = {"north", "america"};
        for (int i = 0; i < tr.size(); i++) {
            if (tr.get(i).text().contains("North America")) {
                String[] salida = tr.get(i).text().split(" ");  
                System.out.println(salida[3].contains("North") + " and " + salida[3].contains("America") );
                System.out.println(Arrays.deepToString(salida));                                                //split salida to country, number ,number in array
                if ( salida[1].matches("[a-zA-Z]+")) {
                    salida1 = salida1 + salida[0] + " " + salida[1] + ",";          
                }
                else if ( salida[2].matches("[a-zA-Z]+")) {
                    salida1 = salida1 + salida[0] + " " + salida[1] + " " + salida[2] +  ",";           
                }
                else if ( salida[3].matches("[a-zA-Z]+") && !salida[3].equals("North") ) { // not working correctly
                    if (  !salida[3].equals("America")) {
                    salida1 = salida1 + salida[0] + " " + salida[1] + " " + salida[2] + " " + salida[3] +  ",";             
                }}
         ```




                else {
                     salida1 = salida1 + salida[0] + " ,";
                }

            }
        }
        return salida1;
    } catch (Exception ex) {
        System.out.println("error");
        return "error";
    }
}

标签: java

解决方案


问题是国家/地区名称包含逗号“,”,这是您的分隔符。您需要找到一种方法使国家名称在同一索引 0 内,或者至少将国家名称用引号“”括起来,这样“North”实际上是索引 3。在上面的示例中,“North”只是索引 3为加拿大。


推荐阅读