Java ArrayList - 检查元素是否为空

标签 java arrays loops arraylist

我只需要找到一种方法来验证输入,以便如果第一个数组输入(主队)丢失,它会显示消息“没有输入主队”。

示例输入=“埃弗顿 : 利物浦 : 1 : 1” 缺少主队示例“:利物浦:1:1”

正如你所看到的,我的尝试如下,我不知道如何解决这个问题:

if (stats.get(i)[0] == null){
System.out.println("no home team name entered");
                }

这是我的完整代码:

public static void main(String args[]) {

         Scanner sc = new Scanner(System.in);
            ArrayList<String[]> stats = new ArrayList<>(); //initialize a container to hold all the stats
            System.out.println("please enter match results:");
            while(sc.hasNextLine())
            {
                String input = sc.nextLine();
                String[] results = input.split(" : ");
                if(results.length == 4)
                {
                    stats.add(results);
                }
                else if(input.equals("stop"))
                    break;
                else
                    System.out.println("Error reading input");
            }//end of while

            for(int i = 0; i < stats.size(); i++)
            {
                if (stats.get(i)[0] == null){
                    System.out.println("no home team name entered");
                }
                try{
                    System.out.println(stats.get(i)[0] + " " + Integer.valueOf(stats.get(i)[2]) + " : " +
                            Integer.valueOf(stats.get(i)[3]) + " " + stats.get(i)[1]);
                }catch (Exception e) {
                    //do nothing with any invalid input
                }
            }

}

最佳答案

分割数组将第一个元素创建为空字符串 - 而不是空字符串。

因此您需要将 stats.get(i)[0] == null 更改为 stats.get(i)[0].isEmpty()

您还可以添加 trim() ,以便首先删除任何多余的空格,或者将拆分正则表达式更改为 \\s+:\\s+,这然后匹配冒号两侧 1 次或多次 出现的空格。

如果您想考虑输入数据可能没有空格的情况,那么您可以将拆分正则表达式字符串更改为 \\s*:\\s*,然后匹配 <冒号两侧出现strong>0 次或多次 空格。

关于Java ArrayList - 检查元素是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44791737/

相关文章:

java - 将 SecurityContextToken 设置为 SOAP header

Java ArrayList 与 C++ std::vector

java - 如何从 Gmail Ical4j API 发送 session 邀请

javascript - 我需要在对象数组中找到一个键并将其与正则表达式匹配

R:Kruskal-Wallis 循环测试数据框中指定的列

Java 泛型 : wildcard extends class and include that class

c++ - 在 C++ 中作为参数传递时,数组隐式转换为容器类

php - 传递 Javascript 数组 -> PHP

javascript - 添加多个有限制的数组

c - 如何在 for 循环中正确实现 sleep 函数? (乌类图)