第五章 流程控制
1. 运行以下代码,将得到什么打印结果?
int i = 3;
int j = 0;
double k = 3.2;
if (i < k)
if (i == j)
System.out.println(i);
else
System.out.println(j);
else
System.out.println(k);
答:0
2. 以下代码能否编译通过?假如能编译通过,运行时将得到什么打印结果?
int i = 4;
switch(i)
{
default:
System.out.println("default");
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
case 2:
System.out.println("two");
}
答:可以编译通过,打印结果是:
default
zero
分析:default可以放在任何位置上,一旦符合一个case即从头执行到尾,不再判断case。
3. 以下哪些是合法的
(a) int i; for(i=5, int j=10; i<10; j--){}
(b) int i,j; for(i=0, j=10; i<10, j>0; i++, j--){}
(c) int i,k; for (i=0, k=9; (i<10 && k>0); i++, k--){}
(d) int i,j; for(i=0; j=10;i<10;i++,j--){}
答:(a) for语句中int定义要放在开头。编译不通过。
(b) 循环判断语句不可以用逗号连接。编译不通过。
(c) 合法。
(d)分号只能有2个。
4. 运行以下代码,将得到什么打印结果?
int i = 1;
switch(i)
{
default:
System.out.println("default");
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
case 2:
System.out.println("two");
}
答:分析同1,运行结果如下:
one
two
5. 以下哪些代码合法?
(a) float x=1;
switch(x) {
case 1;
System.out.println(“Got a 1”);
}
(b) long x=1;
switch(x) {
case 1;
System.out.println(“Got a 1”);
}
(c) byte x=1;
switch(x) {
case 1/1;
System.out.println(“Got a 1”);
}
(d) int x=1;
int c=1;
switch(c) {
case x;
System.out.println(“Got a 1”);
}
(e) short x=1;
switch(x) {
case 3.2/2;
System.out.println(“Got a 1”);
}
(f) short x=1;
switch(x) {
case 1,2,3;
System.out.println(“Got a 1”);
}
答:只有(c)是合法的。
6. 以下代码能否编译通过?假如能编译通过,运行时将得到什么打印结果?
for (int a=0, b=0; a<2; b=++a, System.out.println("b="+b))
{
System.out.println("a="+a);
}
答:可以通过编译,打印结果:
a=0
b=1
a=1
b=2
7. 以下代码能否编译通过?假如能编译通过,运行时将得到什么打印结果?
int x=0;
one:
while(x<10)
{
two:
System.out.println(++x);
if(x>3)
break two;
}
答:不能通过编译。