Java 该方法返回false,而实际上它是true
我有一个方法去处理一个随机访问文件,注册时保留一个字符“a”,如果它是活动的,保留一个字符“B”,如果不是,则保留一个带有记录中字节数的int,然后注册。当代码等于该方法时会发生什么,让位于返回true;但最终我返回了falseJava 该方法返回false,而实际上它是true,java,Java,我有一个方法去处理一个随机访问文件,注册时保留一个字符“a”,如果它是活动的,保留一个字符“B”,如果不是,则保留一个带有记录中字节数的int,然后注册。当代码等于该方法时会发生什么,让位于返回true;但最终我返回了false public boolean seEncuentra(int pos , char[] codigo) { clsPersona contacto = new clsPersona(); //object contact try {
public boolean seEncuentra(int pos , char[] codigo) {
clsPersona contacto = new clsPersona(); //object contact
try {
// buscar registro apropiado en el archivo
abrirArchivo();
archivo.seek(pos);
contacto.estado = archivo.readUTF();
contacto.setTAMANIO(archivo.readInt());
if("A".equals(contacto.estado))
{
for (int i = 0; i < 3; i++) {
contacto.codigo[i] = archivo.readChar();
}
if(Arrays.equals(codigo, contacto.codigo))
{
return true; //enter here and ends up returning false at the end
}
else
{
pos+=contacto.TAMANIO;
seEncuentra(pos, codigo);
}
}
else
{
pos+=contacto.TAMANIO;
seEncuentra(pos, codigo);
}
cerrarArchivo();
}
catch (Exception ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
cerrarArchivo();
return false;
}
return false;
}
public boolean seencumentra(int-pos,char[]codigo){
clsPersona contacto=新建clsPersona();//对象接触
试一试{
//公共汽车登记处
abirarchivo();
自动搜索(pos);
contacto.estado=archivo.readUTF();
contacto.setTAMANIO(archivo.readInt());
如果(“A.”等于(contacto.estado))
{
对于(int i=0;i<3;i++){
contacto.codigo[i]=archivo.readChar();
}
if(数组等于(codigo,contacto.codigo))
{
return true;//在此处输入,最后返回false
}
其他的
{
pos+=联系人TAMANIO;
SEENCUNTRA(pos、codigo);
}
}
其他的
{
pos+=联系人TAMANIO;
SEENCUNTRA(pos、codigo);
}
cerrarchivo();
}
捕获(例外情况除外){
System.out.println(例如getMessage());
例如printStackTrace();
cerrarchivo();
返回false;
}
返回false;
}
您递归,但不返回递归的值。改变
到
在每个位置,您递归您递归而不返回递归值。改变 到 在你反复出现的每个地方
seEncuentra(pos, codigo);
return seEncuentra(pos, codigo);