形如YYMMXXXX
YY:年份后两位(如06)
MM:月份(如11)
XXXX:系统自动生成的号码,从0001开始计数,每个月都从头计数。小弟现在很急,请大家帮助。

解决方案 »

  1.   

    DateFormat df= new DateFormat("YYMM");
    String yymm = df.format(new date());double rad = Math.random() * 1000;
    Format df2 = new Format("0000"); <-这步不对,功能是format数值.
    String xxxx =df2.format(rad);
    result = yymm + xxxx;
      

  2.   

    我帮你写一个吧,不带缓冲功能。如果你允许跳号,那么可以做带缓冲的import java.io.*;
    import java.util.*;
    import java.text.*;public class NumberManager {
    private NumberManager(){
    }
    private static SimpleDateFormat sdf=new SimpleDateFormat("yyMM");
    private static DecimalFormat df = new DecimalFormat("0000");

    private static String fileName="c:\\recorddate.dat";
    private static String currentMonth;
    private static int currentNumber;
    private static BufferedReader reader=null;
    static {
    try{
    reader=new BufferedReader(new FileReader(fileName));
    String temp=reader.readLine();
    reader.close();
    if (temp.length()!=8){
    currentNumber=0;
    currentMonth="0001";
    }else{
    currentNumber=Integer.parseInt(temp.substring(4,8));
    currentMonth=temp.substring(0,4);
    }
    }catch(Exception ex){
    ex.printStackTrace();
    currentNumber=0;
    currentMonth="0001";
    }
    System.out.println("currentNumber="+currentNumber);

    }

    public static void writeToFile(){
    try{
    PrintWriter writer=new PrintWriter(new FileWriter(fileName));
    writer.print(currentMonth);
    writer.println(df.format(currentNumber));

    writer.close();
    }catch(Exception ex){
    ex.printStackTrace();
    }
    }
    public synchronized static String getNumber(Date date){
    if (date==null){
    return null;
    }
    String ym=sdf.format(date);
    if (!ym.equals(currentMonth)){
    currentMonth=ym;
    currentNumber=1;
    }else{
    currentNumber++;
    }
    writeToFile();

    return ym+df.format(currentNumber);
    }

    }