黑马程序员技术交流社区

标题: 求解 [打印本页]

作者: 董玲飞    时间: 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了

  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. }
复制代码

作者: 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, 下载次数: 16)

修改的

修改的

作者: 山治0712    时间: 2014-3-1 16:13
错误,最后 j不能赋值给i,因为j是局部变量,只在for语句中有效




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2