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里面就会说变量没有尚未初始化,难道变量在这些里面有局部性...不是全局的,从来没有遇到啊 感觉奇怪

解决方案 »

  1.   

    if(right_name.compareTo("_0")==0)
      

  2.   

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

  3.   

    因为定义在for或者if里面都有可能走不到
      

  4.   

    因为定义在for或者if里面都有可能走不到
    在声明的时候初始化null
      

  5.   

    那如果在for和if里走不到的话 那我的变量不是永远是初值了那下面的程序怎么办
      

  6.   


    如果false就没有执行
    {
    dfile=new File(file_direction,left_name);
    bueff=new byte[1024];
    }了吧可是这里我是浏览选择文件,文件是一定存在的其实我可以不用if一样效果
      

  7.   

    那如果在for和if里走不到的话 那我的变量不是永远是初值了那下面的程序怎么办
    =========================================================
    这就与你的设计思路有关了,你在用某个变量的时候应该是保证它有值的,最起码做一个null的判断。
      

  8.   

    else if(files[i].exists()==false)//忘了加false
    {
    qkl=i;
    break;
    }程序执行到这里好象qkl并没有得到i的现在的值?帮忙看下程序错误
      

  9.   

    加不加false没关系,
    程序执行到这里好象qkl并没有得到i的现在的值?帮忙看下程序错误
    ============================================
    看看i的作用空间
      

  10.   

    i的作用域是在for里啊 里面我把i的值赋值给qkl了啊?
      

  11.   

    不是很明白哦 在这个方法里我的qkl应该通用的,i好象是作用在for循环里 是这样吗能帮我改改吗  有劳了
      

  12.   

    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;
       }
    }
      

  13.   

    我上面的程序少了
    if(文件存在)
    {i++

    else if(文件不存在)
    {
    把当前的i传值给qkl;
    break;
    }
    我这个fileunit函数是在主类filecu里,在这个函数里的变量i和qkl,楼上的朋友们说的局部变量是说在这个函数里的局部还是主类里局部哦,不是很懂,有点乱  for(int i..里的i是不是只作用在for程序段里,能打个比方哦,举个小小例子大家说的for或程序走不到是什么意思
      

  14.   

    int qkl = -1;//
    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=i;
         break;
       }
    }
    //这个时候如果所有文件都存在,那么qkl == -1;
    //如果你不初始化,这种情况下就出现了qkl为初始化的错误~
      

  15.   

    如果声明的变量不是在类中直接声明 而是在类中的方法中声明时需要赋初始值或着赋NULL值
      

  16.   

    那如果在for和if里走不到的话 那我的变量不是永远是初值了那下面的程序怎么办那你自己看着办
    java要求局部变量要初始化