我试图从类中获取返回的值,但是我认为string.format()
导致错误导致没有值返回。
类别:
public class FilterTime {
public String getData(String day, Integer time){
// define the result
String result = "";
String convertedDay = "";
if(day == "Friday 30th August"){
convertedDay = "30";
}
if(day == "Saturday 31st August"){
convertedDay = "31";
}
if(day == "Sunday 1st September"){
convertedDay = "01";
}
if(time == null){
result = "http://www.website.org/json.php?f=%s&type=date".format(convertedDay);
Log.d("RESULT", "r:" + result);
}else{
result = "http://www.website.org/json.php?f=%s&time=@d&type=dateAndTime".format(convertedDay, time);
Log.d("RESULT", "r:" + result);
}
return result;
}
}
当我在我的活动中跟踪结果时:
FilterTime filterTime = new FilterTime();
String filteredURL = filterTime.getData(dayFilter, timeFilter);
当我跟踪filteredURL时,它根本不返回任何内容。所以我然后将Log.d()
放入类中,我发现在跟踪以下内容时它也不会返回任何内容:
if(time == null){
result = "http://www.website.org/json.php?f=%s&type=date".format(convertedDay);
Log.d("RESULT", "r:" + result);
}else{
result = "http://www.website.org/json.php?f=%s&time=@d&type=dateAndTime".format(convertedDay, time);
Log.d("RESULT", "r:" + result);
}
我无法理解错误的来源,因为没有错误,只是警告说它应该以静态方式访问,但我认为错误存在于if语句中。
答案 0 :(得分:3)
使用equals()比较String
:
将此字符串与指定对象进行比较。当且仅当参数不为null并且是一个表示与此对象相同的字符序列的String对象时,结果才为真。
因此将您的代码更改为:
if("Friday 30th August".equals(day)){
convertedDay = "30";
}
==
运算符比较对象引用,该变量包含对象的引用。它检查引用是否指向同一个对象。
P.S。: - 在字符串文字上调用equals()
以避免因 null day
而导致的任何NPE。
答案 1 :(得分:0)
您的String
比较不正确,而不是==
使用equals
。
format
比较无效, convertedDay
一直打印,因为""
仍为空String
。
答案 2 :(得分:0)
String.format()是一种静态方法。不要在String对象上调用它,只需直接调用它:
String.format("http://www.website.org/json.php?f=%s&type=date", convertedDay);
那应该像你想要的那样进行格式化