根据时间生成12位数的随机编号(数字和字母的组合),随机编号肯定是不能相同的,随机编号中不能含有O、I、0、U、V等英文字母 ,求大虾指点!!!!!!!!

解决方案 »

  1.   

    类似这样的? 用4位数字作日期 0131  + 用毫秒做多编号 37  +用数字英文数组【1-9A-Za-z】 【 除去你那些不能含有的】抽取出几位来做补充、生成这样: 013137a8dec2   个人感觉不能重复吧  有毫秒数在那中间控制 要么多精确毫秒几位
      

  2.   

    代码大致如下,letters[0]-letters[9]你设置为符合条件的字符就可以了。 char[] letters = new char[10];
    for(int i=0;i<10;i++)
    letters[i] = (char) ('A'+i); 

    String tStr = String.valueOf(System.currentTimeMillis());
    System.out.println(tStr);
    StringBuilder sb = new StringBuilder();
    for(int i=1;i<tStr.length();i++)
    {
    sb.append(letters[tStr.charAt(i)-'0']);
    }
    System.out.println(sb.toString());
      

  3.   


            char[] letters = new char[10];
            for(int i=0;i<10;i++)
                letters[i] = (char) ('A'+i); 
            
            String tStr = String.valueOf(System.currentTimeMillis());//tStr为当前时间
      /*因为tStr的字符只有‘0’-‘9’,我们可以把它看成索引到letters中找相应的字符,这样相当于“置换”,所以是不会重复的。*/
            StringBuilder sb = new StringBuilder();
            for(int i=1;i<tStr.length();i++)
            {
                sb.append(letters[tStr.charAt(i)-'0']);/*tStr.charAt(i)-'0'转换成相应的数字,如‘9’-‘0’=9*/
            }
            System.out.println(sb.toString());
      

  4.   

    另外,letters的字符你自己设置为满足条件的10个字符就好了。我为方便就随便赋予‘A’开始的十个字母了。
      

  5.   

    兄弟你直接写一下行不?我来测试下,根据时间生成12位数的随机编号(数字和字母的组合),随机编号肯定是不能相同的,随机编号中不能含有O、I、0、U、V等英文字母,通过加100
      

  6.   


    char[] letters = {'A', 'C', '1', '2', '3','4', 'a', 'e', 'f', 'z'};

    String tStr = String.valueOf(System.currentTimeMillis());
    System.out.println(tStr);
    StringBuilder sb = new StringBuilder();
    for(int i=1;i<tStr.length();i++)
    {
    sb.append(letters[tStr.charAt(i)-'0']);
    }
    System.out.println(sb.toString());