下面的两个小程序本来是两个函数,原先用在PB里面,用来验证身份证号码的,没想到改装成java,就错误百出,还请那位老兄帮忙给调一下,不胜感激!
小程序:testsfz.java
import java.io.*;
import java.lang.*;
import java.math.*;
import java.lang.String.*;
class testsfz
{
      
public static int main(String[] args)
{

 String ls_date="";
 String ls_xb="";
 String as_sfz="";
 String ls_birth="";
 String ls_sex="";
 String ls_return="";

try
{
BufferedReader buffer=new BufferedReader(new InputStreamReader(System.in));
as_sfz=buffer.readLine();
}
catch(Exception e)
{
System.out.println(e.getMessage());
} f_get_sfz_validhb f1 = new f_get_sfz_validhb();


switch(as_sfz.length())
{
case 15://15λµÄÉí·ÝÖ¤

ls_date="19"+ as_sfz.substring(7,2)+"-"+as_sfz.substring(9,2)+"-"+as_sfz.substring(11,2);//»ñµÃ³öÉúÈÕÆÚ

/* if ((as_sfz.substring(15,1)).indexOf("13579")>0)
{
ls_xb="ÄÐ";
}


else
{
ls_xb="Å®";
}


        */

/*
if (!isTimeSet(ls_date)) 
{
System.out.println("ËùÊäÈëµÄºÅÂë²»ÊÇÉí·ÝÖ¤ºÅÂë");

//messagebox("ÌáʾÐÅÏ¢","ËùÊäÈëµÄºÅÂë²»ÊÇÉí·ÝÖ¤ºÅÂë")

return -1;
}



else
{
return 0;
}


*/
    

  case 18://18λµÄÉí·ÝÖ¤

ls_date=as_sfz.substring(7,4)+"-"+as_sfz.substring(11,2)+"-"+as_sfz.substring(13,2);

//if (pos("13579",as_sfz.substring(17,1))>0 )

/* if ((as_sfz.substring(15,1)).indexOf("13579")>0)
{
ls_xb="ÄÐ";
}

else
{
ls_xb="Å®";
}


*/

if (!as_sfz.substring(18,1).equals (f1.getid(as_sfz.substring(1,17))))//ÅжÏУÑéÂë

{
System.out.println("ËùÊäÈëµÄÉí·ÝÖ¤ºÅÂëµÚÊ®°ËλУÑéÂë²»¶Ô");
// messagebox("ÌáʾÐÅÏ¢",".");

return -1;
}


/*

if (!isTimeSet(ls_date)) //ÅжÏÈÕÆÚÊÇ·ñÕýÈ·
{
System.out.println("ËùÊäÈëµÄºÅÂë²»ÊÇÉí·ÝÖ¤ºÅÂë");
//messagebox("ÌáʾÐÅÏ¢","ËùÊäÈëµÄºÅÂë²»ÊÇÉí·ÝÖ¤ºÅÂë");

return -1;
}


else
{
return 0;
}*/

default:

return -1;

}
}
}
小程序f_get_sfz_validhb import java.lang.String.*;
import java.lang.*;
import java.math.*;
import java.io.*;
class f_get_sfz_validhb 
{ public String getid(String a_sfz)
{
String ls_sfz,ls_result;

int li_ai,li_wi,li_sum=0,li_mod,li_result;

ls_sfz = a_sfz;
if (ls_sfz.length()==15 || ls_sfz.length()==17)
{
if (ls_sfz.length()==15) 
{

ls_sfz=ls_sfz.substring(1,6) + "19" + ls_sfz.substring(7,9);
}
for (int i=2;i<=18;i++)
{
li_ai=Integer.parseInt(ls_sfz.substring((19-i),1));  //to integer

li_wi=2^(i - 1)%11;

li_sum=li_sum + (li_ai * li_wi);

}
li_mod=li_sum%11; li_result=12 - li_mod;

if (li_result>=10 )
{
if (li_result==10)
{
  return "X";
}
else
{  
li_result=li_result - 11;
ls_result = String.valueOf(li_result);
return ls_result;
}
}
else
{
ls_result = String.valueOf(li_result);
return ls_result; 

}
}
else

return "E";
}
}
}