zoukankan      html  css  js  c++  java
  • JAVA:主键解决方法(1):最大值+1

    /**
      * 判断字符串是不是数字
      *
      * @param str
      * @return true OR false
      * @see isNumeric("abc") = false
      * @see isNumeric("123") = true
      */
     public static boolean isNumeric(String str) {
      Pattern pattern = Pattern.compile("[0-9]*");
      Matcher isNum = pattern.matcher(str);
      if (!isNum.matches()) {
       return false;
      }
      return true;
     }

     /**
      * 得到01,或者001
      *
      * @param segNum
      *            段长度
      * @return String
      * @see getNewMaxStr(2) = "01"
      * @see getNewMaxStr(3) = "001"
      * @see getNewMaxStr(4) = "0001"
      */

     public static String getNewMaxStr(int segNum) {
      String result = "";
      result = fillStr("0", segNum - 1) + 1;
      return result;
     }

     /**
      * 通过字符串得到 字符串+1的最大数
      *
      * @param str
      *            字符串
      * @param segNum
      *            段长度
      * @return String
      * @see getNewMaxStr("002145", 3)=002146;
      * @see getNewMaxStr("002005", 3)=002006;
      * @see getNewMaxStr("002999", 2)="error: '[0029][99]' segNum is end the
      *      MAXSegNum."
      * @see getNewMaxStr("4123563364", 5)=4123563365;
      */
     public static String getNewMaxStr(String str, int segNum) {
      String result = "";

      if (isNumeric(str) == false) {
       // 判断是否数字
       result = "error: '" + str + "' not a Number.";
      } else {
       // 字符串长度是否能整除 段长
       int strLength = str.length();
       int mod = strLength % segNum;
       if (mod != 0) {
        result = "error: '" + str + "' not Mod segNum.";
       } else {
        String endSegStr = str.substring(strLength - segNum, strLength);
        String stratSegStr = str.substring(0, strLength - segNum);
        // System.out.println("endSegStr:" + endSegStr);
        // System.out.println("stratSegStr:" + stratSegStr);

        // 设置后位段数最大值

        // 将后位段字符str转成int,并 +1, 并取字符串,判断是否已经到最大值
        int segNumMaxStrInt = Integer.parseInt(endSegStr) + 1;
        String segNumMaxStr = String.valueOf(segNumMaxStrInt);
        if (segNumMaxStr.length() == (segNum + 1)) {
         result = "error: '[" + stratSegStr + "][" + endSegStr
           + "]' segNum is end the MAXSegNum.";
        } else {
         // 最大数 + 1; 如:100, 1000, 10000等
         int segNumMax = Integer
           .parseInt("1" + fillStr("0", segNum));
         // System.out.println("segNumMax:" +
         // String.valueOf(segNumMax + segNumMaxStrInt));
         String segNumStr = String.valueOf(
           segNumMax + segNumMaxStrInt).substring(1,
           segNum + 1);
         result = stratSegStr + segNumStr;
        }
       }
      }
      return result;
     }
    }

  • 相关阅读:
    Java 蓝桥杯 算法训练 貌似化学
    Java 蓝桥杯 算法训练 貌似化学
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    JAVA-蓝桥杯-算法训练-字符串变换
    Ceph:一个开源的 Linux PB 级分布式文件系统
    shell 脚本监控程序是否正在执行, 如果没有执行, 则自动启动该进程
  • 原文地址:https://www.cnblogs.com/liul21cn/p/1297856.html
Copyright © 2011-2022 走看看