博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java随机生成字符串和校验
阅读量:5978 次
发布时间:2019-06-20

本文共 5775 字,大约阅读时间需要 19 分钟。

首先给大家推荐一个可以在线运行JAVA程序的网站:

然后可以运行下我的程序代码,我的代码运行效果如下图:

 

接下来定义字符串

1 String a = "0123456789";                    // 数字2 String b = "abcdefghijklmnopqrstuvwxyz";    // 小写字母3 String c = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";    // 大写字母4 String d = "~!@#$%^&*()_+=<>/,./;'[]{}|\\"; // 特殊字符5 String result = "";
View Code

产生随机字符串

1 result = result + getRandomString(a, 2); // 数字 2 result = result + getRandomString(b, 5); // 小写字母 3 result = result + getRandomString(c, 5); // 大写字母 4 result = result + getRandomString(d, 1); // 特殊字符 5  6 /** 7     * 8     * @输入参数:传递一个字符串 传出字符串的长度 9    * @输出参数:随机传出一个指定长度的子字符串10    *11      */12     public static String getRandomString(String str, int length) {13         Random random = new Random();14         StringBuilder sb = new StringBuilder();15         for (int i = 0; i < length; i++) {16             int number = random.nextInt(str.length());17             sb.append(str.charAt(number));18         }19         return sb.toString();20     }
View Code

产生的字符串位置顺序随机打乱

1 result = UnSort(result);  // 将字母顺序打乱 2     /** 3      * 4      * @输入参数:传递一个字符串 5      * @输出参数:随机将传入的子字符串乱序后输出 6      * 7      */ 8     public static String UnSort(String str) { 9         List
lists = new ArrayList<>();10 Random random = new Random();11 StringBuffer sb = new StringBuffer();12 for (int i = 0; i < str.length(); i++) {13 lists.add(str.substring(i, i + 1));14 }15 while (!lists.isEmpty()) {16 int number = random.nextInt(lists.size());17 sb.append(lists.get(number));18 lists.remove(number);19 }20 return sb.toString();21 }
View Code

对生成的字符串生成ASCII校验尾数,这个需与与接收方进行提前约定

1 result = ProCheck(result); 2     /** 3      * 4      * @输入参数:传递一个字符串 5      * @输出参数:在该字符串最后加上字符的ASCII累加和校验 6      * 7      */ 8     private String ProCheck(String str) { 9         int sum = 0;10         for (int i = 0; i < str.length(); i++) {11             sum = sum + (int) str.charAt(i);12         }13         return str + sum;14     }
View Code

以线程方式刷新,没隔一秒产生一个字符串可以发送出去

1 public class MyRandom extends Thread { 2  3     @Override 4     public void run() { 5                 while (true) { 6                     Calendar calendar = Calendar.getInstance();  // 当前时间 7               System.err.println(calendar.getTime() + ":" + result); 8                     try { 9                         sleep(1000);10                     } catch (InterruptedException ex) {11                             Logger.getLogger(MyRandom.class.getName()).log(Level.SEVERE, null, ex);12             }13         }14 }
View Code

全部代码如下:

1 import java.util.ArrayList; 2 import java.util.Calendar; 3 import java.util.List; 4 import java.util.Random; 5 import java.util.logging.Level; 6 import java.util.logging.Logger; 7  8 /** 9  *10  * @author dpchenh11  */12 public class MyRandom extends Thread {13 14     @Override15     public void run() {16         // 没隔一秒生成一个随机字符串:该字符串包含2个数字 5个小写字母 5个大写字母 1个特殊字符 前13位为字符位,后面位数为校验位17         while (true) {18             String a = "0123456789";                    // 数字19             String b = "abcdefghijklmnopqrstuvwxyz";    // 小写字母20             String c = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";    // 大写字母21             String d = "~!@#$%^&*()_+=<>/,./;'[]{}|\\"; // 特殊字符22             String result = "";23             // 加密算法 获取随机数24             result = result + getRandomString(a, 2); // 数字25             result = result + getRandomString(b, 5); // 小写字母26             result = result + getRandomString(c, 5); // 大写字母27             result = result + getRandomString(d, 1); // 特殊字符28             System.out.println("变序后sb:" + result);29             result = UnSort(result);  // 将字母顺序打乱30             result = ProCheck(result);31             System.out.println("变序后sb:" + result);32 33             Calendar calendar = Calendar.getInstance();  // 当前时间34             System.err.println(calendar.getTime() + ":" + result);35             try {36                 sleep(1000);37             } catch (InterruptedException ex) {38                 Logger.getLogger(MyRandom.class.getName()).log(Level.SEVERE, null, ex);39             }40         }41     }42 43     /**44      *45      * @输入参数:传递一个字符串 传出字符串的长度46      * @输出参数:随机传出一个指定长度的子字符串47      *48      */49     public static String getRandomString(String str, int length) {50         Random random = new Random();51         StringBuilder sb = new StringBuilder();52         for (int i = 0; i < length; i++) {53             int number = random.nextInt(str.length());54             sb.append(str.charAt(number));55         }56         return sb.toString();57     }58 59     /**60      *61      * @输入参数:传递一个字符串62      * @输出参数:随机将传入的子字符串乱序后输出63      *64      */65     public static String UnSort(String str) {66         List
lists = new ArrayList<>();67 Random random = new Random();68 StringBuffer sb = new StringBuffer();69 for (int i = 0; i < str.length(); i++) {70 lists.add(str.substring(i, i + 1));71 }72 while (!lists.isEmpty()) {73 int number = random.nextInt(lists.size());74 sb.append(lists.get(number));75 lists.remove(number);76 }77 return sb.toString();78 }79 80 /**81 *82 * @输入参数:传递一个字符串83 * @输出参数:在该字符串最后加上字符的ASCII累加和校验84 *85 */86 private String ProCheck(String str) {87 int sum = 0;88 for (int i = 0; i < str.length(); i++) {89 sum = sum + (int) str.charAt(i);90 }91 return str + sum;92 }93 94 public static void main(String[] args) {95 MyRandom random = new MyRandom();96 random.start();97 }98 }
View Code

 

 

转载于:https://www.cnblogs.com/1187163927ch/p/8930080.html

你可能感兴趣的文章
poj1014 Dividing (多重背包)
查看>>
cxf ServerFactoryBean 生成基于soap1.2的WebServices
查看>>
【转】以操作系统的角度述说线程与进程
查看>>
【十大经典数据挖掘算法】SVM
查看>>
java package 命名空间
查看>>
实现Cookie集合
查看>>
Oracle的DBA管理常用sql
查看>>
四、cocos2dx动画Animation介绍
查看>>
PHP explode() 函数
查看>>
datatables中的Options总结(2)
查看>>
图片不能显示
查看>>
DevExpress 第三方控件汉化的全部代码和使用方法 (转载)
查看>>
WinForm控件使用文章收藏整理完成
查看>>
正确释放WORD对象(COM组件) COMException: 被调用的对象已与其客户端断开连接
查看>>
重谈设计
查看>>
mac 查看python路径
查看>>
【转】asm.js 和 Emscripten 入门教程
查看>>
office2007word文档设置多级目录
查看>>
SASS详解之编译输出的样式
查看>>
利用内存分析工具(Memory Analyzer Tool,MAT)分析java项目内存泄露
查看>>