在下面两个for循环中,我首先给数组元素赋值,然后再将数组元素打印出来。可是运行结果显示我没有赋值呢?
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array = new int[10];
for(int a : array){
         a = (int)(Math.random()*100);
          System.out.print(a + ";");
}
for(int a : array){
System.out.print(a + ";");
}
}
运行结果如下:
26;82;64;78;99;13;13;34;91;39;0;0;0;0;0;0;0;0;0;0;

解决方案 »

  1.   

    for(int a : array){ 
            a = (int)(Math.random()*100); 
            System.out.print(a + ";"); 

    天,这样是遍历array的值,也就是把值取出来,是不能存值的
    你看清楚,这个a是只有在这个for循环内才有效的
      

  2.   

    a是在对应的for循环内定义的变量
      

  3.   

    你的代码等价于
    for(int i = 0;i<array.length;i++){
            int a = (int)(Math.random()*100); 
            System.out.print(a + ";"); 
    }
    这你你赋值的是for循环里的局部变量.
      

  4.   

    答:给数组元素赋值时,不要使用:for(int a : array){... }
    因为:此时的a是一个临时变量(它不是数组元素array[i]),因而:对a的赋值,不会对数组array有影响.即:达不到对array中元素赋值的目的.
    还是使用:
    for(int i=0;i<array.length;i++)
    {
     array[i]=...;
    }
      

  5.   

    你的foreach循环不怎么清楚,不过自己用for循环写了下是成功的..
    public static void main(String[] args) {
            // TODO Auto-generated method stub
    int[] array = new int[10];
    for(int i=0;i<array.length;i++){
    int a=(int)(Math.random()*100);
    System.out.print(a+";");
    array[i]=a;
    }
    System.out.println();
    for(int i=0;i<array.length;i++){
    System.out.print(array[i]+";");
    }
    }
    运行结果:
    36;47;12;27;54;34;34;61;9;44;
    36;47;12;27;54;34;34;61;9;44;
    希望你能自己看出来为什么你那里没有附值成功...
      

  6.   

    a是新定义的用来存array当前元素值的。
      

  7.   

    for的这个用法,类似于C#里的foreach,如果不熟悉的话,建议用常规的方法。