0

我需要检查输入String或 aString[]是否是null""用于在 java 中的方法内进行计算。

此方法将参数作为String...

我正在使用以下条件;有人可以检查并让我知道我在这里做错了什么,

if(tokens==null){
    return;
} else if(tokens[0] != null && tokens[0]!=""){
    return;
} 
4

5 回答 5

2

tokens[0]!=""基本上是比较 and 的内存引用tokens[0]""这不是你想做的。相反,您需要实际检查 的内容String,例如

else if(tokens[0] != null && tokens[0].isEmpty()){

更新...

你的问题有点奇怪......你不能有一个方法,String然后尝试将它用作数组,除非该方法需要varargs,那么你无论如何都会将它视为一个数组。

public boolean isEmpty(String... values) {
    boolean isEmpty = values == null || values.length == 0;
    if (!isEmpty) {
        for (String value : values) {
            if (value == null || value.isEmpty()) {
                isEmpty = false;
                break;
            }
        }
    }
    return isEmpty;
}

这意味着您可以使用...

isEmpty("");
isEmpty("I'm not an array");
isEmpty("Check 1", "Check 2");
isEmpty(new String[]{"Check 1", "Check 2"});

或者类似的......

于 2013-09-27T03:59:44.993 回答
0

假设该方法采用 String 的参数(不是 String[]),那么:

if(tokens == null || tokens.length() == 0) {
    return;
}

如果该方法采用 String[] 的参数,则需要决定是否要检查:

  1. 如果数组为空
  2. 如果数组包含任何元素(.length == 0)
  3. 如果任何元素为空
  4. 如果任何元素的长度为零

假设您想检查所有四个,您可以尝试:

if(tokens == null || tokens.length == 0) {
    return;
} else {
    for(final String token : tokens) {
        if(token == null || token.length() == 0) {
            return;
        }
    }
}
于 2013-09-27T04:07:00.027 回答
0

不需要写两个条件。

您只需尝试isEmpty(), 只有一个条件。

我需要检查输入 String 或 String[] 是否为 null 或 ""

那是不可能的。论点要么是,string要么array

如果tokens 是一个数组,

if(tokens[0] !=null && tokens[0].isEmpty()){
return;
}

如果令牌是字符串,

if(tokens !=null && tokens.isEmpty()){
return;
}
于 2013-09-27T04:00:31.167 回答
0

而不是这个:

} else if(tokens[0] != null && tokens[0]!=""){

你不想要这个:

} else if(tokens[0] == null || tokens[0]==""){

IE逻辑被反转。

于 2013-09-27T04:12:39.023 回答
0

尝试为StringCollections简洁地处理 null 和 empty 检查的实用程序库:

import org.apache.commons.collections.CollectionUtils;
import org.springframework.util.StringUtils;

if(CollectionUtils.isEmpty(tokens))
    return; // tests that the Collection parameter is neither null nor empty

for(String token : tokens)
{
  if(!StringUtils.hasText(token)) // tests that the String parameter is neither null nor empty
    return;
}
于 2013-09-27T04:13:13.450 回答