java中一个简单的for循环程序,运行总是错误,大家帮看看!谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/26 13:19:28
public class xunhuan04
{
public static void main(String args[ ])
{
int i;
int j;
for(i=1;i<=5;i++)
j=1;
System.out.println("j的值为"+j);
}
}
我认为结果应该为:j的值为1
但是运行时会提示:variable j might not have been initialized
这是什么原因啊,请指点!!!
谢谢大家的回答,j是要初始化,但是请再看一下这个程序:
public class xunhuan03
{
public static void main(String args[ ])
{
int i;
int j;
for(i=1;i<=5;i++)
{
j=1;
System.out.println("j的值为"+j);
}
}
}
这个程序我可以运行出来,而且不需要对j进行初始化,为什么啊?

局部变量在定义的时候可以不初始化,但是一旦要使用的时候就必须初始化了.
像你的i,因为在循环的时候初始化了i=1,所以没有问题.
问题在j,上下两个程序的区别在于,println在for里面和外面
外面的情况:因为程序不能判断你是否在for里面初始化了j,所以警告可能未初始化,
里面的情况:因为紧跟着println前面的语句是 j=1 ;所以不会有警告;

考虑下面的情况:在for里外都写上一个println语句,jvm只会提示外面的println的地方j可能没有初始化

同样的,如果你的初始化语句放在
if,for,while,try,等等有可能不会执行到的语句块里面,那么在外面还是会提示可能未初始化的

int j = 0;
j初始化才可以
如果j初始化 再用你的for循环就没什么意义的
j初始化为0
循环5次 每次给j都赋值1
代码改成下面的试一下
public class xunhuan04

{
public static void main(String args[ ])
{
int i;
int j = 0;
for(i=1;i<=5;i++)
j+=1;
System.out.println("j的值为"+j);
}
}

局部变量j要初始化的啊,否则就会错误的,你可以这样:int j=0;

这是java语言的强制性初始化检查,有利于提高程序的稳定性。

你在定义的时候这样写:int j=0;就好了。
因为在for循环里做的操作java在编译的时候是不做检查的,它只是对赋值语句进行检查。

变量使用的时候要初始化,不用的时候不需要。

for循环的条件不需要使用j,然后你把1赋给j这就是个初始化。所以打印出来就是j的值为1

//下边程序中,i = 1; j =1 就是初始化了。