高手,您好:
    我是一名学习软件工程的学生,我在写一个“CS结构的聊天系统”,今天,我碰到了一个代码问题:
    我想写一个“生成系统功能授权”的“序列号生成器”,弟我写成的类文件,代码如下:
    
    
    弟我的这个计算序列号的类,是“首先调用了"产生随机数"的整个序列号组成单元的发动机:抓取本地系统毫秒数的"System.currentTimeMillis(); "方法”进行的计算.
    并且,这里的构造方法,是在“每一次需要进行一个新的序列号的计算”,这个时间点下出现的.
    并且,这里的得到的打印结果是:
    
    经过多方的朋友的相助,现在,初步将错误定位在了:
    第37行的“code字符数组转字符串”的过程,应该用“new String();”构造方法来代替,于是,我将代码修改成了下述结果:
    
    弟我将第37行的“toString(code);”方法,修改成了“new String(code);”,但是,没有得到应有的“输出结果”,得到的输出结果如下:
    
    结果,没有得到“任何预期的系统服务授权码"...
    希望高手能够告诉我上面代码的错误原因,如果高手能够帮助我”,希望高手在告诉了弟我“错误的原因”之后,能够将修改的方法和修改后的代码,写到回复上.
    谢谢高手的点拨!!
                                                     一位日日夜夜向着理想奔跑的筑梦者
                                                          2013年9月5日星期四晚上23点23分string调试类型转换代码结构逻辑Java调试

解决方案 »

  1.   

    弟我的上述类文件的代码如下:
        package d_port_package;public class D_port_Calc_The_Customer_useAuthorizationCode {
    static int[] a = new int[50];
    static char[] code = new char[9];
    int random = 0;
    static int random0_4 = 0;
    static int random1_50 = 0;
    static int random1_50jumb5 = 0; 
    public D_port_Calc_The_Customer_useAuthorizationCode(){
    long time2=System.currentTimeMillis(); 
    String dataformat = Long.toString(time2);
    String Standarddataformat = dataformat.substring(12,13);
    System.out.println(Standarddataformat);
    random0_4 = Integer.parseInt(Standarddataformat)/2;
    random1_50jumb5 = Integer.parseInt(Standarddataformat+1)*5/2;
    random1_50 = Integer.parseInt(Standarddataformat)-random0_4;
    a[0] = random1_50;
    a[3] = random1_50;
    a[6] = random1_50;
    a[8] = 55;
    a[2] = 41 - a[0];
    a[5] = 91;
    a[4] = 28 - a[6];
    a[1] = 66 - a[0] - a[5];
    a[7] = 99 - a[3] - a[1];
    }
    public static void main(String[] args){ String[] str = new String[200];
    for(int i = 0;i<200;i++){
    new D_port_Calc_The_Customer_useAuthorizationCode(); for(int j = 0;j<9;j++){
    code[j] = (char)a[j];
    }
     str[i] = new String(code);
    System.out.println(str[i]);
    }
    }
    }
      

  2.   

    package d_port_package;public class D_port_Calc_The_Customer_useAuthorizationCode {
    static int[] a = new int[50];
    static char[] code = new char[9];
    int random = 0;
    static int random0_4 = 0;
    static int random1_50 = 0;
    static int random1_50jumb5 = 0; 
    public D_port_Calc_The_Customer_useAuthorizationCode(){
    long time2=System.currentTimeMillis(); 
    String dataformat = Long.toString(time2);
    String Standarddataformat = dataformat.substring(12,13);
    System.out.println(Standarddataformat);
    random0_4 = Integer.parseInt(Standarddataformat)/2;
    random1_50jumb5 = Integer.parseInt(Standarddataformat+1)*5/2;
    random1_50 = Integer.parseInt(Standarddataformat)-random0_4;
    a[0] = random1_50;
    a[3] = random1_50;
    a[6] = random1_50;
    a[8] = 55;
    a[2] = 41 - a[0];
    a[5] = 91;
    a[4] = 28 - a[6];
    a[1] = 66 - a[0] - a[5];
    a[7] = 99 - a[3] - a[1];
    }
    public static void main(String[] args){ String[] str = new String[200];
    for(int i = 0;i<200;i++){
    new D_port_Calc_The_Customer_useAuthorizationCode(); for(int j = 0;j<9;j++){
    code[j] = (char)a[j];
    }
     str[i] = new String(code);
    System.out.println(str[i]);
    }
    }
    }    标准版本格式代码如上.
      

  3.   

    电脑执行太快了吧,每次for循环sleep 1ms试试
      

  4.   


    package d_port_package;public class D_port_Calc_The_Customer_useAuthorizationCode {
    static int[] a = new int[50];
    static char[] code = new char[9];
    int random = 0;
    static int random0_4 = 0;
    static int random1_50 = 0;
    static int random1_50jumb5 = 0; 
    public D_port_Calc_The_Customer_useAuthorizationCode(){
    long time2=System.currentTimeMillis(); 
    String dataformat = Long.toString(time2);
    String Standarddataformat = dataformat.substring(12,13);
    System.out.println(Standarddataformat);
    random0_4 = Integer.parseInt(Standarddataformat)/2;
    random1_50jumb5 = Integer.parseInt(Standarddataformat+1)*5/2;
    random1_50 = Integer.parseInt(Standarddataformat)-random0_4;
    a[0] = random1_50;
    a[3] = random1_50;
    a[6] = random1_50;
    a[8] = 55;
    a[2] = 41 - a[0];
    a[5] = 91;
    a[4] = 28 - a[6];
    a[1] = 66 - a[0] - a[5];
    a[7] = 99 - a[3] - a[1];
    }
    public static void main(String[] args){ String[] str = new String[200];
    for(int i = 0;i<200;i++){
    new D_port_Calc_The_Customer_useAuthorizationCode();//为什么多次进行创建对象?难道会因为时间改变把初始化的东西也改变了?
    for(int j = 0;j<9;j++){
    str[i] = new String(a[j]);
                            System.out.println(str[i]);
    }
    }
    }
    }
      

  5.   

    下面是改正部分str[i] = ""+a[j];测试结果:
    6
    3
    -28
    38
    3
    25
    91
    3
    124
    55
      

  6.   

    数字向字符串进行转化方式有很多,但是不能使用强制转化。
    第一种:使用api里面的方法
    第二种:用空字符串+数字的形式会自动对数字转化
      

  7.   

    fudongrifdr哥,感谢您的点拨!!
    弟我现在得到的结论是:
        就如“昨晚就是你”哥的留言,这里的“toString()方法”在进行“赋值计算的时候”,是将一个地址,赋值给了等号左面的String类型的变量....
        fudongrifdr哥,由于“昨晚就是你”哥的多次相助和“神赐予我钱途吧”哥所费的心血..
        弟我,今天欠您一次积分..
        今后再有机会,弟我将您的分数补上!
        昨晚就是你哥,神赐予我钱途吧哥,谢谢您们的相助!!
        如果有机会,一定在“物质世界”报答您们的栽培!!
        都在酒里了!!