我正在写这个函数isEmpty(String str)
。
此功能的行为应如下:
isEmpty("") : true
isEmpty(" ") : false
isEmpty("abcdef") : false
我已经编写了这个函数,但问题是并没有将空格视为字符。
public static boolean isEmpty(String str) {
if(str == null) {
return true;
}
for(Character ch:str.toCharArray()) {
if(Character.isWhitespace(ch)) {
continue;
} else {
return false;
}
}
return true;
}
知道我在这个功能中缺少的地方吗?
答案 0 :(得分:6)
你为什么不这样做:
return str.length() == 0
虽然我不明白为什么你需要写这个,因为这基本上是内置的String#isEmpty()
方法所做的...
如果字符串包含空格,那么您编写的代码将返回字符串为空,但您对所需行为的描述表明它不需要包含空格。
因此要么删除空格检查并满足描述要求,要么留下空白检查,并且说明需要修复。
答案 1 :(得分:1)
看看这个Apache commons方法isEmpty(String)
这是它的行为方式
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false
StringUtils.isEmpty("bob") = false
StringUtils.isEmpty(" bob ") = false
实施如下,
public static boolean isEmpty(String str) {
return str == null || str.length() == 0;
}
答案 2 :(得分:0)
答案涉及以下几点:
if(Character.isWhitespace(ch)) {
continue;
如果您向下滚动到他们正在谈论“继续”语句的位置,您可能会发现this link很有用。然后我会尝试逐行遍历你的代码行" "
,看看会发生什么。