switch语句只执行默认值

时间:2013-10-03 04:49:52

标签: java

这是我的代码:

    public String toString() {
        int mode = HomeScreenActivity.displayMode;
        switch(mode){
        case 1:
            return _id + ". " + lastName + " " + firstName;
        case 2:
            return _id + ". " + firstName + " " + mobileNumber;
        case 3:
            return _id + ". " + lastName + " " + mobileNumber;
        default:
            return _id + ". " + firstName + " " + lastName;
        }
    }

问题是,只有默认代码正常工作。

我知道我可能错过了一些愚蠢的东西,但我无法让它发挥作用。

编辑:在toString()方法内打印不起作用,它不打印任何内容。但我不认为这意味着它没有被运行,因为我的联系人实际上是如何在我的ListView中显示的,所以我不确定发生了什么...

3 个答案:

答案 0 :(得分:1)

我的程序中有这个代码:

public void onClick(DialogInterface dialog, int which) {
    which = ((AlertDialog) dialog).getListView().getCheckedItemPosition();
    System.out.println("The display selected item numebr is " + which);
    switch (which) {
        case 0:
            setDisplayMode(0);
            displayChoice = 0;

        case 1:
            setDisplayMode(1);
            displayChoice = 1;
            break;
        case 2:
            setDisplayMode(2);
            displayChoice = 2;

        case 3:
            setDisplayMode(3);
            displayChoice = 3;

    }
}

没有中断,所以案例3始终在运行,每次都将displayChoice设置为3。所以我在每个案例结束时加入了休息时间,并且它有效。

答案 1 :(得分:-1)

你必须使用break

public String toString() {
    int mode = HomeScreenActivity.displayMode;
    switch(mode){
    case 1:
        return _id + ". " + lastName + " " + firstName;
         break;
    case 2:
        return _id + ". " + firstName + " " + mobileNumber;
         break;
    case 3:
        return _id + ". " + lastName + " " + mobileNumber;
         break;
    default:
        return _id + ". " + firstName + " " + lastName;

    }
}

答案 2 :(得分:-1)

在这里你应该考虑两件事

  1. 您应该添加break语句。

  2. 在类型(int)范围内切换(模式)。