首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

奇怪的变量尚未初始化,该怎么处理

2012-03-04 
奇怪的变量尚未初始化publicvoidfileunit(){Filefirst_filenewFile(text.getText())Stringfile_nameStr

奇怪的变量尚未初始化
public   void   fileunit()
{
File   first_file=new   File(text.getText());
String   file_name;
String   file_direction;
String   left_name;
String   right2_name;
File   dfile;
byte   bueff[];

file_name=first_file.getName();
file_direction=first_file.getParent();
left_name=file_name.substring(0,file_name.length()-2);
//substring(int   beginIndex,   int   endIndex),读取字符自己定义的开始位置到结束位置,即可以读取某字符串某段的内容
String   right_name=file_name.substring(file_name.length()-2);
right2_name=file_name.substring(file_name.length()-1);
//substring(int   beginIndex)自己定义开始位置,结束默认
if(right_name.compareTo( "_0 ")==0)
{
dfile=new   File(file_direction,left_name);
bueff=new   byte[1024];
}

else
{
JOptionPane.showMessageDialog(null, "太小了 ", "太小了 ",2);
}

File   files[];
files=new   File[200];
int   qkl;
for(int   i=0;   i <200;   i++)
{
files[i]=new   File(file_direction,left_name+right2_name+Integer.toString(i));
if(files[i].exists())
{
i++;
}
else   if(files[i].exists())
{
qkl=i;
break;
}
}
try{
RandomAccessFile   filedd=new   RandomAccessFile(dfile, "rw ");
RandomAccessFile   filesrandom[];
for(int   qk=0;   qk <=qkl;   qk++)
{
filesrandom[qk]=new   RandomAccessFile(files[qk], "r ");
for(int   kl=0;   kl <files[qk].length();   kl++)
{
int   a=filesrandom[qk].read(bueff);
...}
编译出现以下问题:
filecute.java:142:   可能尚未初始化变量   dfile
                RandomAccessFile   filedd=new   RandomAccessFile(dfile, "rw ");
                                                                                                          ^
filecute.java:144:   可能尚未初始化变量   qkl
for(int   qk=0;   qk <=qkl;   qk++)
                                    ^
filecute.java:146:   可能尚未初始化变量   filesrandom
                                filesrandom[qk]=new   RandomAccessFile(files[qk], "r ");
                                ^
filecute.java:149:   可能尚未初始化变量   bueff
                                                int   a=filesrandom[qk].read(bueff);


为什么会有这些问题  我定义在一些if或for里面就会说变量没有尚未初始化,难道变量在这些里面有局部性...不是全局的,从来没有遇到啊 感觉奇怪

[解决办法]
如果false就没有执行
{
dfile=new File(file_direction,left_name);
bueff=new byte[1024];
}

了吧
[解决办法]
建议LZ全部在声明的时候进行初始化
------解决方案--------------------


for(int i=0; i <200; i++){
files[i]=new File(file_direction,left_name+right2_name+Integer.toString(i));
if(files[i].exists()){
i++;
}else if(files[i].exists()){
qkl=i;
break;
}
}

lz这一段用法有问题~
1,怎么做两次if(files[i].exists())处理~
2,在for里面用i++,你不怕越界!!~~
如果你仅仅是为了判断文件存在的qkl值
你可以如下改:
for(int i=0; i <200; i++){
files[i]=new File(file_direction,left_name+right2_name+Integer.toString(i));
if(files[i].exists()){
//qkl=-1时表示文件都不存在
qkl=(i+1==200?-1:i+1);
break;
}
}
[解决办法]
局部变量,必须初始化采用使用
程序流程里必须保证局部变量被初始化
如果可能走不到,而导致某个变量没有初始化,后面再引用到该变量的时候就会出现编译错误
[解决办法]
如果声明的变量不是在类中直接声明 而是在类中的方法中声明时需要赋初始值或着赋NULL值

热点排行