计算100加到1,int a是循环变量,int sum是储存相减后的结果。
如果把sum = 100写在for语句变量初始化的括号内,如下图所示:报错:但如果把sum拿出来单独赋值,如下图,则可执行通过:问题:for(变量初始化; 条件判断; 步进) ,是不是for语句只能初始化一个变量?
PS:步进是老师自己取得名字,不管它。

解决方案 »

  1.   

    作用域的问题!for循环条件内声明的变量只能在循环体内使用! 多看看书
      

  2.   

    sum 变量的作用域只在for循环体内,把sum = 0放到for循环前边就好了
      

  3.   


    for (int a = 100, sum = 0; a >= 1; a--) {
    sum += a;
    System.out.println(sum);
    }你如果这么写肯定不会报错的,发现区别了么,sum的作用域是循环体内,你在循环体内可以任意的使用它,但是如果出了循环体就好比你问的那样,sum就相当于是一个未声明的对象了。
    而你下面那段代码刚好是在循环体外声明的sum,所以作用域为方法体内,所以就可以使用了
      

  4.   

    sum的作用域只是在for循环里。你可以把sum声明在for循环前面,这样作用域就是整个main函数了
      

  5.   

    sum只能声明在循环体外时才是5050
    如果在循环体内声明,出了循环体不 会见效!
      

  6.   

    变量是在哪一对大括号中声明的,那么它的作用域就在这对大括号中。
    for()语句中可以有多个变量,但是出了for(){}之外就不能用了,
    而int sum = 0;写在for()语句之前相当于sum的作用域是整个main方法内部
      

  7.   

    恩,简单的说就是作用域的问题,sum定义在for循环内在外面就相当于没定义,那你打印它必然就会提醒你不存在这个变量。而当你定义在for语句外面,也就是main方法中的时候,它的作用域就是main方法,当然在for循环中也是可以使用的。关于lz说的for的第一个语句是否可以定义多个变量,回答是,当然可以,但也要满足一定的语法条件。for(int i= 0,j = 0;i < 100;i++)
    {
    }是完全可以的。但是,int i=0;
    for(i = 1,int j = 0;i < 100;i++)
    {
    ]就是不可以的。可以理解为一种规范吧。希望lz的问题得到解决。
      

  8.   

    作用越的问题,在你写的代码中,sum的作用越只能在for循环里面有效,你现在打印sum超出他的作用越了
      

  9.   

    public class ForTest
    {
    public static void main(String [] args)
    {

    for(int i=100, sum=0;i>=1;i--)
    {
        sum+=i;System.out.println(sum);
    }}
    }
    这样就行了,
      

  10.   

    你那个sum在for循环里面定义的,所以不能写在外面,作用域问题,给点儿分啊