Switch语句不显示任何结果

时间:2015-07-03 19:33:21

标签: java android android-studio

我正在使用Etsy的Android Staggered视图库,我想在每个网格上添加数据。所以我使用switch语句代替for循环。但没有显示任何结果。是否有语法错误或我应该在这里使用任何其他语句? 我评论了最初存在的for循环。帮助我能够显示字符串。

package com.etsy.android.sample;

import java.util.ArrayList;

public class SampleData {

public static final int SAMPLE_DATA_ITEM_COUNT = 6;

public static ArrayList<String> generateSampleData() {
    final ArrayList<String> data = new ArrayList<String>(SAMPLE_DATA_ITEM_COUNT);

    switch (SAMPLE_DATA_ITEM_COUNT) {

        case 0:
            data.add("New Delhi");
            break;


        case 1:
            data.add("Mumbai");
            break;


        case 2:
            data.add("Kanpur");
            break;


        case 3:
            data.add("Hyderabad");
            break;


        case 4:
            data.add("Bangalore");
            break;


        case 5:
            data.add("Noida");
            break;


    }

    /*
    for (int i = 0; i < SAMPLE_DATA_ITEM_COUNT; i++) {
        data.add("SAMPLE #");
    }

    */

    return data;


}
}

1 个答案:

答案 0 :(得分:4)

您无法使用for语句替换switch循环。它们用于完全不同的目的。 for循环将运行

data.add("SAMPLE #");

六次,但你的switch语句只会执行一次,它会查找匹配6的项目,在你的情况下没有一个,所以这就是为什么没有显示的原因。如果您将SAMPLE_DATA_ITEM_COUNT的值更改为15之间的数字,则会看到一个项目。为了帮助您理解,您的switch语句与以下if语句完全相同:

if (SAMPLE_DATA_ITEM_COUNT == 0) {
        data.add("New Delhi");
} else if (SAMPLE_DATA_ITEM_COUNT == 1) {
        data.add("Mumbai");
} else if (SAMPLE_DATA_ITEM_COUNT == 2) {
        data.add("Kanpur");
} else if (SAMPLE_DATA_ITEM_COUNT == 3) {
        data.add("Hyderabad");
} else if (SAMPLE_DATA_ITEM_COUNT == 4) {
        data.add("Bangalore");
} else if (SAMPLE_DATA_ITEM_COUNT == 5) {
        data.add("Noida");
}

但在您的情况下SAMPLE_DATA_ITEM_COUNT6,这就是您没有看到任何内容的原因。

要查看您的所有数据,您需要在for语句周围添加switch循环 - 例如:

for (int i = 0; i < SAMPLE_DATA_ITEM_COUNT; ++i) {
    switch (i) {

    case 0:
        data.add("New Delhi");
        break;

    case 1:
        data.add("Mumbai");
        break;

    case 2:
        data.add("Kanpur");
        break;

    case 3:
        data.add("Hyderabad");
        break;

    case 4:
        data.add("Bangalore");
        break;

    case 5:
        data.add("Noida");
        break;
    }
}

你可以简化一些事情并完全摆脱switch语句和for循环而只是这样做:

data.add("New Delhi");
data.add("Mumbai");
data.add("Kanpur");
data.add("Hyderabad");
data.add("Bangalore");
data.add("Noida");