java - 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";
}
}
解决方案
问题是国家/地区名称包含逗号“,”,这是您的分隔符。您需要找到一种方法使国家名称在同一索引 0 内,或者至少将国家名称用引号“”括起来,这样“North”实际上是索引 3。在上面的示例中,“North”只是索引 3为加拿大。
推荐阅读
- java - 通过单击 Android MapsFragment 中的地图来隐藏 UI 元素
- swift - 是否可以使用 Swift Combine 框架中的发布者和订阅者创建循环管道?
- c# - 如何从 url 中检索 http 响应状态代码?
- gnuplot - gnuplot,将 xtics 旋转 90 度
- apache-spark - Spark 在纱线和 CephFS 上使用 kerberos 提交:stagingdir 不可读
- javascript - 使用 Ember 使 cookie 可用于兄弟域
- java - Spring LDAP:未找到匹配的响应控件 - 正在寻找'class javax.naming.ldap.PagedResultsResponseControl
- prometheus - Prometheus 如何在 Kubernetes 中抓取服务/负载均衡器后面的多个主机?
- html - 在烧瓶 jinja2 的 img src 中使用外部链接
- python - 你如何计算熊猫数据框中的常见 1?