黑马程序员技术交流社区
标题: 求解 [打印本页]
作者: 董玲飞 时间: 2014-2-28 17:30
标题: 求解
谁帮忙看下,这道题运行结果是输出10次100吗?还是编译失败?我不是很确定哈。。。。
public static void main(String args[]){
char digit = 'a';
for (int i = 0; i < 10; i++){
switch (digit)
{
case 'x' :
{
int j = 0;
System.out.println(j);
}
default :
{
int j = 100;
System.out.println(j);
}
}
}
inti = j;
System.out.println(i);
}
作者: l939 时间: 2014-2-28 17:57
楼主,最后的那个输出语句
inti = j;
System.out.println(i);
是没用的。去掉后运行就行了,是10次100
作者: 郝大龙0104 时间: 2014-2-28 19:34
inti = j;
System.out.println(i);
这句话有问题的 你是编译不过去的 其中有两个问题
1. inti 这是什么? 你的意思是不是 int i
2. 其中 int i = j; j是局部变量 它不能赋值给i的
最后,两句代码 不知道你做什么 下次最好有写上注释 方便我们给你解答 是你代码更加完善
把最后两句代码去掉 运行结果就是 打印10次100啦
作者: 午夜b'Boy 时间: 2014-2-28 22:29
没对大括号内定义的局部变量只在括号内有效,出了括号外无法引用
作者: 谭荣强 时间: 2014-2-28 23:13
inti = j;
System.out.println(i);
你想把j=0赋值给i吧,j是switch语句里面的局部变量,j的作用域只在switch语句的大括号里。swtich在栈内存中运行 ,运行结束,j自动释放掉。等jvm读到 inti = j;无法识别。
作者: 我感觉优势很大 时间: 2014-2-28 23:24
最后的那个int i=j,这个是不行的,因为j是局部变量,作用范围在switch中,你把后两句给去了,就能输出10次100了
- public class Test {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- char digit = 'a';
- for (int i = 0; i < 10; i++){
- switch (digit)
- {
- case 'x' :
- {
- int j = 0;
- System.out.println(j);
- }
- default :
- {
- int j = 100;
- System.out.println(j);
- }
- }
- }
- }
- }
复制代码
作者: xietansheng 时间: 2014-2-28 23:39
编译失败,倒数第三行(int i = j)的j没有定义,前面的j是局部变量,作用域只在它所在的代码块。
作者: 何伟超 时间: 2014-3-1 00:16
为什么没人写break呢?
作者: Aenon 时间: 2014-3-1 08:17
i 跟j在循环里都是局部变量,内存会释放的,把那两句注释掉就可以了,这这个是微调的代码。。。。
-
G(IUVMZOY_GZ$(IWBIT{~GK.jpg
(64.04 KB, 下载次数: 31)
修改的
作者: 山治0712 时间: 2014-3-1 16:13
错误,最后 j不能赋值给i,因为j是局部变量,只在for语句中有效
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |