public String next() {
switch(key) {
default:
case 0 : key++; return "Snow White";
case 1 : key++; return "Bashful";
case 2 : key++; return "Doc";
case 3 : key++; return "Dopey";
case 4 : key++; return "Grumpy";
case 5 : key++; return "Happy";
case 6 : key++; return "Sleepy";
case 7 : key = 0; return "Sneezy";

}
}为什么这个样子能正确执行,把default放到下面就不能正确执行下面这个样子也能正确执行:
public String next() {
switch(key) {
// default:
case 0 : key++; return "Snow White";
case 1 : key++; return "Bashful";
case 2 : key++; return "Doc";
case 3 : key++; return "Dopey";
case 4 : key++; return "Grumpy";
case 5 : key++; return "Happy";
case 6 : key++; return "Sleepy";
case 7 : key = 0; return "Sneezy";

}
return null;
}

解决方案 »

  1.   

    那要看你出现default时有没有return了
      

  2.   

    java中,必须规定方法如果有返回值,那么必须返回一个值。
    如果你方法里面只有一个switch。那么switch中。必须将所有的情况都考虑到。并且返回值。即使default也一样。你可以去试试。这样。
    public String getString(int i){ if(i == 1)
    return "aaa";}
    这样就是错的。
    但是如果这样
    public String getString(int i){ if(i == 1)
    return "aaa";
    else
    return "bbb";
    }
    就是对的。
      

  3.   

    default:
    后没有break
    顺序执行下面有返回值的语句。
      

  4.   

    想问一句   你不会是只把default:放到最后面了吧……