import java.util.Scanner;
public class Za {
private static final double sum = 0;
public static void main(String[] args) {
int score[]=new int[5];
int sum=0;
for (int i = 0; i < score.length; i++) {
System.out.println("请输入成绩:");
Scanner input = new Scanner(System.in);
score[i] = input.nextInt();
sum=sum+score[i];
}
System.out.println("平均分为:"+sum/5.0);
}
}
为什么上面那个int sum=0放在for(;;)里面就会出错,有什么不同吗?for(int i ,sum=0;~;~)
更多 0
是变量的作用域的问题,在for循环的开始条件里声明的变量只能在for循环里用的,也即是说你的代码相当于:
for( ;condition ; i++)
{
int i,sum=0;
}
system.out.peintln("...."+sum/len);
一个是sum的作用域的问题,就是出了循环就不能再用sum了,因为一出作用域就被java的垃圾回收器给回收了,之后就找不到sum了,就会报错,
第二,你的i如果是第二种写法是没有初始化的,但的确,i默认为0,应该编译器应该是不会提示你这个问题的说。
你的最后一句可如此处理
for(....)
{
......;
if(i==score.length-1)
system.out.println("平均分为:"+sum/5.0);
}
就可以了
在for循环中定义的变量,不能带出代码块。
System.out.println("平均分为:"+sum/5.0); 这里看不到sum
java作用域,放在for里面,sum的作用域在for循环结束就结束了,for循环后就不能再使用这个变量了。所以
System.out.println("平均分为:"+sum/5.0); 这句的sum就会未定义
java局部变量。。
int sum=0放在for(;;)里面就会出错,有什么不同吗?for(int i ,sum=0;~;~)
当sum=0放在for里面时;你循环一次就将sum赋值为零了;而你的i在for里最后的条件是i++,所以i是不断变化的,如果你循环5次;
第一次sum=0后执行for花括号里的代码,sum值是变了;但你第二次循环时,for里的条件是sum=0,所以又从零开始了;i变成了1;
如此5次都是一样的,所以你获取的都是零;
如果你非要把sum=0放在for里的第一个条件里;你也可以在for里第三个条件里放sum的其它运算条件。
如果回答对您有帮助,请采纳
java作用域 放在for里面
如果回答对您有帮助,请采纳
要算平均分 是不是总分数/人数 你放到FOR循环里面 就是 每次循环算总数的时候,以前的累计都清零了~~~~~~~~~~~~平均分就不对咯!