String name  = "";
        
        List<String> list = new ArrayList<String>();         list.add("1"); 
        list.add("2"); 
        list.add("3"); 
        list.add("4");         for (name : list) { 
            System.out.println(name);
        } 上面这段代码,为什么会编译错误?name我想在for循环外面用到。。

解决方案 »

  1.   

    如果要在外面用到就不能用for-each循环
    如果一定要,那就改成如下:
    String name  = ""; 
            
            List <String> list = new ArrayList <String>();         list.add("1"); 
            list.add("2"); 
            list.add("3"); 
            list.add("4");         for (String name : list) { 
                System.out.println(name); 
                this.name=name;
            } 
      

  2.   

    name是作为一个临时变量使用吧,这个foreach操作的格式就规定要写上声明类型的~
      

  3.   

    使用jdk1.5的for/in时,必须声明变量的。
      

  4.   


    这里name貌似不是属性,这么用通不过检查,也不用专门这么声明一个属性吧,可以换个名字使用局部变量赋值.
    另外这样循环外的变量会被反复赋值,直到最后一次循环.
    如果要在循环外使用list集合的最后一个值,为什么不直接list.get(list.size()-1)呢 ( ̄(工) ̄) 
      

  5.   

    恩恩请楼上的各位不要看到什么就随便的正解正解,自己去试试看能不能用
    1楼的那样写,我试过了,name还是不能通过的。
      

  6.   

    改成这样试试
     List <String> list = new ArrayList <String>();         list.add("1"); 
            list.add("2"); 
            list.add("3"); 
            list.add("4");         for (String name : list) { 
                System.out.println(name); 
               }
    不用什么name
      

  7.   

    1楼的写法也是错误的,不可能在 一个方法里定义两个同名的变量,注意FOR()不是方法。
      

  8.   

    也可以这样写
    String name  = ""; 
            
            List <String> list = new ArrayList <String>();         list.add("1"); 
            list.add("2"); 
            list.add("3"); 
            list.add("4");         for (int i=0;i<list.size();i++) { 
                System.out.println(i.get(i)); 
            } 
      

  9.   

    for(String name:list)之中,
    String是不能少的,如果想在外面使用到变量,只能另外编程,毕竟,这里name是指list中的每一个对象。
      

  10.   

    如果你想在外面使用name变量,那就在for循环中不要使用name了,改名叫lstName变量不就可以了,具体写法如下:String name  = ""; 
            
            List <String> list = new ArrayList <String>();         list.add("1"); 
            list.add("2"); 
            list.add("3"); 
            list.add("4");         for (String lstName : list) { 
                System.out.println(lstName); 
            } 
      

  11.   

    系统不知道name是什么类型的,这个是JDK1.5的新特性
      

  12.   

    两个name之一必须改名,或者两个name不在一个函数中,否则重名
      

  13.   

    import java.util.ArrayList;
    import java.util.List;
    public class Test {
    String name  = ""; 
    public static void main(String[] args) {
    new Test().meth();
    }
    public void meth() {
    //String name  = "";  放在这里是通不过的  ;楼上的朋友提过了。
        List <String> list = new ArrayList <String>(); 
        list.add("1"); 
        list.add("2"); 
        list.add("3"); 
        list.add("4"); 
       for (String name : list) { //String name  = "";  在meth()里面 name不就是重名了吗
           System.out.println(name);
          this.name = name;
           System.out.println(this.name);
       } 
    }
    }