比较两个字符串是否“大于'0'且非空”

3
我正在努力理解严格的Java方法和运算符,但是现在,我正在尝试将一段PHP代码“翻译”成Java(Android),但有些卡住了。
在PHP中:
if ($row['price']>'0'){
  (.. do something if price is defined - and higher than zero ..)
}

问题在于$row['price']可能为空(在Java中为null?)或包含'0'(零)。 但是我该如何以聪明而不太复杂的方式在Java中编写代码呢?

注意:空字符串和空引用之间有区别。 - Mark Byers
请使用相关标签。我已经为您重新打了标签。 - keyser
иҜ·жҹҘзңӢStringзұ»APIдёӯзҡ„compareTo()ж–№жі•пјҡhttp://docs.oracle.com/javase/7/docs/api/java/lang/String.html#compareTo(java.lang.String) - Hunter McMillen
2个回答

6
假设您已经将价格字符串存储在变量“price”中。
String price = <get price somehow>;    
try {
    if (price != null && Integer.valueOf(price) > 0) {
        do something with price...
    }
} catch (NumberFormatException exception) {
}

为什么需要将价格转换为整数?原始版本只是将它们作为字符串进行比较。因此,我想你可以简单地使用price.compareTo("0") > 0。 - mhshams
“compareTo”方法按字典顺序比较字符串。据我所知,这不完全符合他在这里的意图。 - smichak

2
你可以使用这个:
String price="somevalue";
int priceInt=Integer.valueOf(price);

try{
if( !price.equals("") && priceInt>0){

// if condition is true,do your thing here!

}
}catch (NullPointerException e){

//if price is null this part will be executed,in your case leave it blank
}
catch (NumberFormatException exception) {
}

也许我们在这里说的是不同的语言?我正在使用Java/Android,对于字符串类型,IsEmpty()未定义,而不是“&”,应该是“&&”吧? - richey
我没有注意到“Android”这个单词。我改变了我的答案。而且,“&”和“&&”是有区别的。使用“&&”只会检查条件语句的第一个语句,如果它为“false”,那么第二个语句将被忽略,将整个条件标记为“false”。 - JahN EstaCado

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接