Java ArrayList - 检查元素是否为空

时间:2017-06-28 00:01:26

标签: java arrays loops arraylist

我只需要找到一种验证输入的方法,这样如果缺少第一个数组输入(hometeam),它就会显示消息"没有输入主队"。

样本输入="埃弗顿:利物浦: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
                }
            }

}

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

非常简单。如果没有输入,您的for-loop将不会被输入,因此不会进行检查。

用以下内容读取内容后替换你的for循环:

Select Id, Group_Concat(Col1) As Col1, 
        Group_Concat(Col2) As Col2, 
        Group_Concat(Col3) As Col3, ... 
        Group_Concat(Coln) As Coln 
From table 
Group By Id

希望有所帮助。

我阅读了评论并理解你的问题:

您不会拥有包含多于或少于4个元素的任何String []。您通过说results.length == 4来确保这一点,否则将不会向ArrayList添加任何内容。下一步是确保输入有效的团队名称,并确保最后2个元素是Numbers。复制功能 How to check if a String is numeric in Java绿色答案或最热门的答案。

答案 2 :(得分:0)

尝试使用StringUtils package。您可以使用StringUtils.isBlank(stats.get(i)[0])

StringUtils.isBlank检查字符串是否为空或完全是空格。

此外,您需要检查统计信息是否为空以显示整个输入为空白的消息

如果您想知道,以下是isBlank的代码:

public static boolean isBlank(final CharSequence cs) {
    int strLen;
    if (cs == null || (strLen = cs.length()) == 0) {
        return true;
    }
    for (int i = 0; i < strLen; i++) {
        if (Character.isWhitespace(cs.charAt(i)) == false) {
            return false;
        }
    }
    return true;
}