import java.util.*;public class Test
{
public int hello()
{
Scanner scn = new Scanner(System.in);
int i = scn.nextInt();
switch(i)
{
default:
case 0:
return 0;
break;
case 1:
return 1;
case 2:
return 2;
}
}
public static void main(String[] args)
{}
}
这段代码会报错,说是缺少返回语句,但是如果把case 0后面的break去掉,
程序就可以正确运行,请问大家为什么呢?
{
public int hello()
{
Scanner scn = new Scanner(System.in);
int i = scn.nextInt();
switch(i)
{
default:
case 0:
return 0;
break;
case 1:
return 1;
case 2:
return 2;
}
}
public static void main(String[] args)
{}
}
这段代码会报错,说是缺少返回语句,但是如果把case 0后面的break去掉,
程序就可以正确运行,请问大家为什么呢?
你那break是不管在什么情况下都不会执行到的(都return了)
你那break是不可达的
应该报 break; 执行不到吧应该是个warning才对程序这样写 break;执行不到的吧
每次都直接return了
int k=0;
switch(i)
{
case 0:
k=0;
break;
case 1:
k=1;
break;
case 2:
k=2;
break;
default:
k=0;
break;
}
return k;
你这个逻辑连自己都没理清楚,还怎么期望编译器按你的意思去编译???
忠告是:无论什么情况下,把default放到最后都是明智的。
{
public int hello()
{
Scanner scn = new Scanner(System.in);
int i = scn.nextInt();
int k;
switch(i)
{
case 0:
k=0;
break;
case 1:
k=1;
case 2:
k=2;
default:
k=0;
}
return k;
}
public static void main(String[] args) {
}
}
{
public int hello()
{
Scanner scn = new Scanner(System.in);
int i = scn.nextInt();
switch(i)
{
default:
case 0:
return 0; //如果i == 1 或是 2,则程序流程会碰到break语句结束,自然就缺少返回值了!break;
case 1:
return 1;
case 2:
return 2;
}
}
public static void main(String[] args)
{}
}