0

我正在尝试从一个类中获取返回值,但是我相信这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 语句中。

4

3 回答 3

3

使用equals()比较String:

将此字符串与指定对象进行比较。当且仅当参数不为 null 并且是表示与此对象相同的字符序列的 String 对象时,结果才为真。

因此将您的代码更改为:

if("Friday 30th August".equals(day)){
        convertedDay = "30";
}

==运算符比较对象引用,变量包含对对象的引用。它检查引用是否指向同一个对象。

PS:-在字符串文字上调equals()用以避免由于null day导致的任何 NPE 。

于 2013-07-03T11:13:21.700 回答
0

您的String比较不正确,而不是==use equals

format由于无效比较而convertedDay保持空白,因此不打印任何内容。""String

于 2013-07-03T11:14:00.990 回答
0

String.format()是一个静态方法。不要在 String 对象上调用它,只需像这样直接调用它:

String.format("http://www.website.org/json.php?f=%s&type=date", convertedDay);

那应该像你想要的那样进行格式化

于 2013-07-03T11:47:51.910 回答