解决方案 »

  1.   

    package cjco;import java.util.Calendar;
    import java.util.Random;
    import java.util.Scanner; public class Makeatest {
    int myindex = 0;
    static int[] a = new int[37];
    static char[] code = new char[36];
    static char[] data = new char[36];
    int random = 0;
    StringBuilder str0;
    static int len0,len1,len2,len3 = 0;
    String[] buffer,codebuffer = null;
    static int random0_4 = 0;
    static int random1_50 = 0;
    static int random1_50jumb5 = 0; 
    int numbuffer = 0;
    String Localrelationship = "";
    String LocalMyPlace = "";
    int MyPlacelog = 0;
    String LocalMyFriPlace = "";
    int MyFriPlacelog = 0;
    String Mymonth,Myday,Myyear = "";
    String OurCustomerProductsInfo = "";
    String Localrelationship0 = "";
    String LocalRoleNum0 = "";
    String LocalRoleNum1 = "";
    String LocalMyplace = "";
    String LocalMyFriplace = "";
    static int month = 0 ;
    static int day = 0;

    public Makeatest(){
    for(int i =0;i<100;i++){
    String str = printlnSportCode(Localrelationship0,LocalRoleNum0,LocalRoleNum1,LocalMyPlace,LocalMyFriPlace);
    System.out.println(str);
    }

    }

    public void GetUserRightsCode(){
    Random random = new Random();
    a[0]=random.nextInt(85-72)+72;
    a[1]=65;
    a[2]=66;
    a[3]=67;
    //索引值为第4位的授权码的意义是:最高级别用户授权的含义.
    a[4] = 68;
    a[5]=45;
    a[6]=69;
    a[7]=70;
    a[8]=a[0]*2/3;
    a[9]=random.nextInt(57-48)+48;
    a[10] = a[1]+5;
    a[18]=5*(random.nextInt(27-22)+22)+a[1];
    a[11]=45;
    a[12]=65;
    a[13]=random.nextInt(90-65)+65;
    a[14]=random.nextInt(90-65)+65;
    a[15]=random.nextInt(90-65)+65;
    a[16]=random.nextInt(57-48)+48;
    a[17]=45;
    a[18]=65;
    a[19]=random.nextInt(90-65)+65;
    a[20]=65;
    a[21]=random.nextInt(90-65)+65;
    a[22]=a[20]+2;
    a[23]=45;
    a[24]=random.nextInt(57-48)+48;
    a[25]=random.nextInt(90-65)+65;
    if(!(65<=a[19]&&a[19]<=74)){
    a[26]=a[19]-10;
    }if(!(81<=a[19]&&a[19]<=90)){
    a[26]=a[19]+10;
    }
    a[20]=a[22]-2;
    }


    public String No1stcreatfirst(String str){
    char[] code0 = str.toCharArray();
    code0[27]=(char)53;
    String str0 = String.valueOf(code0);
    str0 = String.valueOf(Recv.mycustomerSyscodenum)+"第一级别教师授权码"+str0;
    StringBuilder str18 = new StringBuilder(str0);
    int sdoihf = str18.indexOf("码");
    str18.insert(sdoihf+29, "曌");
    Recv.mycustomerSyscodenum++;
    return str18.toString();
    }

    public String No2ndcreatfirst(String str){
    char[] code0 = str.toCharArray();
    code0[27]=(char)52;
    String str0 = String.valueOf(code0);
    str0 = String.valueOf(Recv.mycustomerSyscodenum)+"第二级别教师授权码"+str0;
    StringBuilder str18 = new StringBuilder(str0);
    int sdoihf = str18.indexOf("码");
    str18.insert(sdoihf+29, "曌");
    Recv.mycustomerSyscodenum++;
    return str18.toString();
    } public String No3rdcreatfirst(String str){
    char[] code0 = str.toCharArray();
    code0[27]=(char)51;
    String str0 = String.valueOf(code0);
    str0 = String.valueOf(Recv.mycustomerSyscodenum)+"第三级别教师授权码"+str0;
    StringBuilder str18 = new StringBuilder(str0);
    int sdoihf = str18.indexOf("码");
    str18.insert(sdoihf+29, "曌");
    Recv.mycustomerSyscodenum++;
    return str18.toString();
    } public String No4thcreatfirst(String str){
    char[] code0 = str.toCharArray();
    code0[27]=(char)50;
    String str0 = String.valueOf(code0);
    str0 = String.valueOf(Recv.mycustomerSyscodenum)+"第四级别教师授权码"+str0;
    StringBuilder str18 = new StringBuilder(str0);
    int sdoihf = str18.indexOf("码");
    str18.insert(sdoihf+29, "曌");
    Recv.mycustomerSyscodenum++;
    return str18.toString();
    }

    public String No5thcreatfirst(String str){
    char[] code0 = str.toCharArray();
    code0[27]=(char)49;
    String str0 = String.valueOf(code0);
    str0 = String.valueOf(Recv.mycustomerSyscodenum)+"第五级别教师授权码"+str0;
    StringBuilder str18 = new StringBuilder(str0);
    int sdoihf = str18.indexOf("码");
    str18.insert(sdoihf+29, "曌");
    Recv.mycustomerSyscodenum++;
    return str18.toString();
    }

    public String NoHostcreatfirst(String str){
    StringBuilder str10 = new StringBuilder(str);
    str10.insert(0, "关公的青龙偃月刀网络培训学校产品序列号");
    int sdoihf = str10.indexOf("码");
    str10.insert(sdoihf+29, "曌");
    int len = len3 + len2+len1+len0;
    int confirmnum = day + month;
    String confirmnum0 = String.valueOf(confirmnum);
    if(confirmnum0.length()==2){
    myindex= Integer.parseInt(String.valueOf(confirmnum0.charAt(1)));
    }else{
    myindex= Integer.parseInt(String.valueOf(confirmnum0.charAt(0)));
    }
    int mynextindex = len;
    char[] buffer = new char[51];
    buffer[12] = (char)(65+myindex);
    buffer[20] = (char)(65+mynextindex);
    String str20 = "";
    str20 = new String(buffer);
    str20 = Recv.mycustomerSyscodenum+str20;
    Recv.mycustomerSyscodenum++;
    return str20;
    } //序列号防伪机制.:第242行.代码作用位置:
       public String GetOurCustomerProductfirstRights(String str) {
       String DateInfo="";//日期信息
           String RoleInfo="";//角色信息
           
         if(LocalRoleNum0.length()==1){
           LocalRoleNum0 = "00"+LocalRoleNum0;
           }    if(LocalRoleNum0.length()==2){
           LocalRoleNum0 = "0" + LocalRoleNum0;
           }    if(LocalRoleNum1.length()==1){
           LocalRoleNum1 = "00" + LocalRoleNum1;
           }
          
       if(LocalRoleNum1.length()==2){
           LocalRoleNum1 = "0" + LocalRoleNum1;
           }
           
       Calendar ca = Calendar.getInstance();
       int year = ca.get(Calendar.YEAR);
       Myyear = String.valueOf(year).substring(2,4);
           month=ca.get(Calendar.MONTH);//获取月份 
           month++;
           day=ca.get(Calendar.DATE);//获取日
           Mymonth = String.valueOf(month);
           if((len0 = Mymonth.length())==1)
           
            Mymonth = "0"+Mymonth;
        
           Myday = String.valueOf(day);
           if((len1 = Myday.length())==1)
            Myday = "0"+Myday;
           
           len2 = Myyear.length();
           //序列号防伪机制.:3个值的和,所指向的索引位置,为三个值的变量的和的个位的值.
           len3 = len2+len1+len0;
           int myconfirmdata = Integer.parseInt(Myday.substring(1));
           System.out.println("+++++++++++++"+myconfirmdata);
           DateInfo= Myyear+Mymonth+Myday ;
         if(month==12){
            month = 1;
            year ++;
           }
           Myyear = String.valueOf(year).substring(2);
           Mymonth = String.valueOf(month);
           String ExpiryDateInfo = Myyear+String.valueOf(Integer.parseInt(Mymonth)+1)+Myday;
            
       RoleInfo=String.valueOf(Localrelationship)+LocalRoleNum0+LocalRoleNum1+LocalMyPlace+LocalMyFriPlace;
           String myconfirmcode = String.valueOf(len3);
       OurCustomerProductsInfo=DateInfo+RoleInfo+ExpiryDateInfo;
       StringBuilder str0 = new StringBuilder(OurCustomerProductsInfo);
       for(int i = 2;i<30;i=i+3){
       str0.insert(i, '¥');
       }
       str0.insert(myconfirmdata,myconfirmcode);
       String str1 = str0.toString();
       buffer = str1.split("¥");
       String MyOrderNum = "";
       for(int i =0;i<10;i++){
       codebuffer[i]= Recv.OurCoreWeapon.get(buffer[i]);
       MyOrderNum = MyOrderNum + codebuffer[i];
       }
       return MyOrderNum;
       }
      
       //生成系统序列号.
       public String getMynextCodework(String relationship,String MyRole0Num,String MyRole1Num,String MyPlace,String MyFriPlace){
       Localrelationship0 = relationship;
    LocalRoleNum0 = MyRole0Num;
    LocalRoleNum1 = MyRole1Num;
    LocalMyPlace = MyPlace;
    LocalMyFriplace = MyFriPlace;
       GetUserRightsCode();
       Scanner Input = new Scanner(System.in);
    String MyData = Input.next();
    data = MyData.toCharArray();
    a[28]=data[0];
    a[29]=data[1];
    a[30]=data[2];
    a[31]=data[3];
    a[32]=data[4];
    a[33]=data[5];
    a[34]=data[6];
    a[35]=data[7];
    for(int i = 28;i<35;i++){
    System.out.println(i+"          "+a[i]);
    }
    a[1] = a[1]+a[28];
    a[2]= a[2] + a[29];

    String str = new String();

    for(int j = 0;j<28;j++){
    System.out.println(j+"         "+a[j]);
    }
    for(int j = 0;j<36;j++){
    code[j] = (char)a[j];
    }
    str = new String(code);

    String str19 = GetOurCustomerProductfirstRights(str);
    StringBuilder str0 = new StringBuilder(str19);
    String str1 = NoHostcreatfirst(str0.toString());
    return str1;
    }
      
      
      
       public String printlnSportCode(String relationship,String MyRole0Num,String MyRole1Num,String MyPlace,String MyFriPlace){
       Localrelationship0 = relationship;
    LocalRoleNum0 = MyRole0Num;
    LocalRoleNum1 = MyRole1Num;
    LocalMyPlace = MyPlace;
    LocalMyFriplace = MyFriPlace;
       Scanner Input = new Scanner(System.in);
    String MyData = Input.next();
    data = MyData.toCharArray();
    a[28]=data[0];
    a[29]=data[1];
    a[30]=data[2];
    a[31]=data[3];
    a[32]=data[4];
    a[33]=data[5];
    a[34]=data[6];
    a[35]=data[7];
    for(int i = 28;i<35;i++){
    System.out.println(i+"          "+a[i]);
    }
    a[1] = a[1]+a[28];
    a[2]= a[2] + a[29];

    String[] str = new String[200];
    for(int i = 0;i<200;i++){
    GetUserRightsCode();
    for(int j = 0;j<28;j++){
    System.out.println(j+"         "+a[j]);
    }
    for(int j = 0;j<36;j++){
    code[j] = (char)a[j];
    }
    str[i] = new String(code);
    str0 = new StringBuilder(str[i]);

    }
    return NoHostcreatfirst(str0.toString());
       } public static void main(String[] args){
    new Makeatest();
    }}    现在我运行第二个类型,在console窗口中输入“今日时间”,格式为:“20140303”,之后,得到的序列号为:
        
        希望得到高手的指导:
        我的错误,出在什么地方?
        为什么会有上面的结果出现?
        如何修改?
      

  2.   

    我用debug模式跟了一遍,问题锁定在:
        上述的第277行的printlnSportCode();方法,它能够在执行完毕后,返回值的第313行的代码,str0,是有值的,但是经过了本行的:
        }
                return NoHostcreatfirst(str0.toString());
              }
        代码:“NoHostcreatfirst(str0.toString());”方法的作用后,未能够返回一个值.
        于是,我跟到这个方法体中进行查看:
        我发现这个方法中的所有的局部作用域的变量的值,都没有得到赋值.
        只有成员作用域的值得到了赋值.
        希望大家能够相助:
        为什么这个“NoHostcreatfirst()”方法,他的作用域中的语句以及变量,会有这个结果.
        谢谢大家!!
      

  3.   

    1、首先你代码有 Scanner Input = new Scanner(System.in);
    那运行的时候你要在控制台输入信息才行。
    2、 str[i] = new String(code);
    你这样封装不行,指定一个字符编码,比如 str[i] = new String(code,"utf8");
      

  4.   

    方名师姐,感谢您的点拨!!
        方名师姐,如果我的这里的code[]数组,是一个char[]型的数组,那应该怎么办?
        求方名师姐版主,再次相助!!
        
      

  5.   

    自顶一个!!
        求CSDN中的高手相助!!