import java.io.*;
import java.lang.*;
public class ConvertId {
public static void main(String args[]){
String IdNumber="";  int index;
System.out.println("please input ID number: "); try{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
         IdNumber = in.readLine();
         index = Integer.parseInt(IdNumber);
      }catch(IOException e)    {}
     catch(NumberFormatException e)  {e.printStackTrace();}
 


 if(IdNumber.length()==18) {
int s1 =Integer.parseInt(IdNumber.substring(6,10));
int s2 =Integer.parseInt(IdNumber.substring(10,12));
int s3 =Integer.parseInt(IdNumber.substring(12,14));
System.out.println("---------------------------------------------");
System.out.println("the birthday is "+s1+" year "+s2+" month "+s3+" day ");
int age =2011-s1;

System.out.println("the age is "+age);
if((int)IdNumber.charAt(17)%2==0)
System.out.println("the people ia a man");
else System.out.println("the people is a woman:");
}     

if(IdNumber.length()==15){
String code;
int num = 0;
StringBuffer IdNumber1 = new StringBuffer(IdNumber);
IdNumber1.insert(6,"19");
//IdNumber = IdNumber.substring(0,5)+"19"+IdNumber.substring(6,14);
for(int i=17; i>=0; i--)
num+=(int)Math.pow(2,i-1)*(Integer.parseInt(IdNumber1.substring(i)));
num%=11;
switch(num) {
case 0: code = "1"; break;
case 1: code = "0"; break;
case 2: code = "X"; break;
default: code = 12-num+" "; break;
}
IdNumber1 =IdNumber1.append(code);
System.out.println(IdNumber1);
}
}
}

解决方案 »

  1.   

    18位身份证号码对于int太大了,用long吧。上面两行代码这么改
    String IdNumber=""; long index;

      index = Long.parseLong(IdNumber);
      

  2.   

    Exception in thread "main" java.lang.NumberFormatException: For input string:        at java.lang.NumberFormatException.forInputString(NumberFormatExceptio
    java:48)
            at java.lang.Integer.parseInt(Integer.java:467)
            at java.lang.Integer.parseInt(Integer.java:496)
            at Test.main(Test.java:48)
      

  3.   


    try{
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
      IdNumber = in.readLine();
    //   System.out.println(IdNumber);
      //因为你读取到的一行数据后面是有空格的
      //parseInt 无法将空格转化为数字
      index = Integer.parseInt(IdNumber.trim());
      }catch(IOException e) {
      e.printStackTrace();
     System.out.println("exceiptin is "+e);
      }
    还有就是你的index明明没有用到~你定义它干嘛呢?
      

  4.   

    Exception in thread "main" java.lang.NumberFormatException: For input string:  at java.lang.NumberFormatException.forInputString(NumberFormatExceptio
    java:48)
      at java.lang.Integer.parseInt(Integer.java:467)
      at java.lang.Integer.parseInt(Integer.java:496)
      at Test.main(Test.java:48)
      

  5.   

    写错了 int的最大值(2^32-1)
    你的需求要15位和18位~~
    还是3楼说的对~呵呵~
      

  6.   

    类型 我改了 但是 还是报异常  
    Exception in thread "main" java.lang.NumberFormatException: For input string:  at java.lang.NumberFormatException.forInputString(NumberFormatExceptio
    java:48)
      at java.lang.Integer.parseInt(Integer.java:467)
      at java.lang.Integer.parseInt(Integer.java:496)
      at Test.main(Test.java:48)
    求一点意见  新手~~~~~~~~
      

  7.   

    身份证用String吧,难道你不知道身份证中有可能出现“X”吗?
      

  8.   

    如果是解析身份证的话,不需要转换为Int啊!
      

  9.   

      恩啊哈   Int ->double