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里面就会说变量没有尚未初始化,难道变量在这些里面有局部性...不是全局的,从来没有遇到啊 感觉奇怪
{
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里面就会说变量没有尚未初始化,难道变量在这些里面有局部性...不是全局的,从来没有遇到啊 感觉奇怪
{
dfile=new File(file_direction,left_name);
bueff=new byte[1024];
}了吧
在声明的时候初始化null
如果false就没有执行
{
dfile=new File(file_direction,left_name);
bueff=new byte[1024];
}了吧可是这里我是浏览选择文件,文件是一定存在的其实我可以不用if一样效果
=========================================================
这就与你的设计思路有关了,你在用某个变量的时候应该是保证它有值的,最起码做一个null的判断。
{
qkl=i;
break;
}程序执行到这里好象qkl并没有得到i的现在的值?帮忙看下程序错误
程序执行到这里好象qkl并没有得到i的现在的值?帮忙看下程序错误
============================================
看看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;
}
}
if(文件存在)
{i++
}
else if(文件不存在)
{
把当前的i传值给qkl;
break;
}
我这个fileunit函数是在主类filecu里,在这个函数里的变量i和qkl,楼上的朋友们说的局部变量是说在这个函数里的局部还是主类里局部哦,不是很懂,有点乱 for(int i..里的i是不是只作用在for程序段里,能打个比方哦,举个小小例子大家说的for或程序走不到是什么意思
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为初始化的错误~
java要求局部变量要初始化