java - 带有 switch case 语句的 Android Studio 1.1 警告

标签 java android android-studio

我有一个分支将系统星期整数值替换为人类可读的字符串值。

当我像下面这样使用 if-else 语句时,Android Studio 1.1 不会发出任何警告。

int intDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
String curStrDayOfWeek = "";
if (intDayOfWeek == 1) {
    curStrDayOfWeek = getResources().getString(R.string.sunday);
}
else if(intDayOfWeek == 2) {
    curStrDayOfWeek = getResources().getString(R.string.monday);
}
else if(intDayOfWeek == 3) {
    curStrDayOfWeek = getResources().getString(R.string.tuesday);
}
[SNIP]

globals = (Globals) this.getApplication();

try {
    [SNIP]
    globals.hdsr_data.put("currentDayOfWeek", curStrDayOfWeek);
    [SNIP]
catch (Exception e) {
        System.out.println("Error:" + e);
    }
   [SNIP]

但是如果我尝试像下面这样使用 switch-case 语句,它会警告分配给 curStrDayOfWeek 的值 getResources().getString(R.string.sunday) 永远不会被使用。然后我收到 6 个警告,因为值有 7 个分支。

int intDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
switch (intDayOfWeek) {
    case 1 : curStrDayOfWeek = getResources().getString(R.string.sunday);
    case 2 : curStrDayOfWeek = getResources().getString(R.string.monday);
    case 3 : curStrDayOfWeek = getResources().getString(R.string.tuesday);
[SNIP]
}

我想在没有警告的情况下编写代码(拼写错误除外)。如何在没有警告的情况下使用 switch-case 语句?

最佳答案

But if I try to use switch-case statement like the following, it warns the value getResources().getString(R.string.sunday) assigned to curStrDayOfWeek is never used.

这是绝对正确的 - 因为您会立即掉到下一个分支。您需要一个 break 语句:

switch (intDayOfWeek) {
    case 1:
        curStrDayOfWeek = getResources().getString(R.string.sunday);
        break;
    case 2:
        curStrDayOfWeek = getResources().getString(R.string.monday);
        break;
    case 3:
        curStrDayOfWeek = getResources().getString(R.string.tuesday);
        break;
    ...
}

不过我个人可能只是构建一个数组:

private static final int[] DAY_NAME_RESOURCES = {
    0, // not used
    R.string.sunday,
    R.string.monday,
    R.string.tuesday,
    ...
};

然后使用:

curStrDayOfWeek = getResource().getString(DAY_NAME_RESOURCES[i]);

关于java - 带有 switch case 语句的 Android Studio 1.1 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29877515/

相关文章:

java - 在Java中将大型机签名字符转换为相应整数值的最佳方法是什么

java - Android 布局上的 NullPointer?

android - Android 中的 Gatt 服务器设备名称长度

短信中的 Android 市场链接

java - 无法在 android studio 谷歌地图中获取标记和位置

java - 在 Wildfly 中实例化 ClientBuilder 期间的 ClassCastException

java - 如何在java中将Unicode(utf-8)转换为十六进制字符串?

android-intent - 如何停止扫描和存储来自 Google 的 Vision API 的数据?

android - build.gradle 中的未知属性 'LibraryVariants'

java - Java servlet 不会解析带有 "[]"符号的 Cookie