A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董玲飞 中级黑马   /  2014-2-28 17:30  /  1263 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谁帮忙看下,这道题运行结果是输出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);   
}
   

评分

参与人数 1黑马币 +5 收起 理由
何伟超 + 5

查看全部评分

9 个回复

倒序浏览
楼主,最后的那个输出语句
inti = j;
System.out.println(i);  
是没用的。去掉后运行就行了,是10次100

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
inti = j;
    System.out.println(i);   
这句话有问题的   你是编译不过去的     其中有两个问题
1.   inti     这是什么?  你的意思是不是  int  i
2.   其中  int i = j;  j是局部变量   它不能赋值给i的

最后,两句代码  不知道你做什么   下次最好有写上注释   方便我们给你解答 是你代码更加完善
把最后两句代码去掉  运行结果就是 打印10次100啦

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
午夜b'Boy 来自手机 中级黑马 2014-2-28 22:29:23
板凳
没对大括号内定义的局部变量只在括号内有效,出了括号外无法引用
回复 使用道具 举报
inti = j;
System.out.println(i);
你想把j=0赋值给i吧,j是switch语句里面的局部变量,j的作用域只在switch语句的大括号里。swtich在栈内存中运行  ,运行结束,j自动释放掉。等jvm读到  inti = j;无法识别。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
最后的那个int  i=j,这个是不行的,因为j是局部变量,作用范围在switch中,你把后两句给去了,就能输出10次100了

  1. public class Test {

  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub
  4.                  char digit = 'a';
  5.                 for (int i = 0; i < 10; i++){
  6.                   switch (digit)
  7.                   {
  8.                           case 'x' :
  9.                           {
  10.                              int j = 0;
  11.                              System.out.println(j);      
  12.                           }
  13.                           default :
  14.                           {
  15.                              int j = 100;
  16.                              System.out.println(j);      
  17.                           }
  18.                   }
  19.                 }
  20.         }
  21. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
编译失败,倒数第三行(int i = j)的j没有定义,前面的j是局部变量,作用域只在它所在的代码块。
回复 使用道具 举报
为什么没人写break呢?
回复 使用道具 举报
i 跟j在循环里都是局部变量,内存会释放的,把那两句注释掉就可以了,这这个是微调的代码。。。。

G(IUVMZOY_GZ$(IWBIT{~GK.jpg (64.04 KB, 下载次数: 19)

修改的

修改的

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
错误,最后 j不能赋值给i,因为j是局部变量,只在for语句中有效
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马