运行效果图:
具体实现代码aaarticlea/png;base64,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" alt="" />
package randomdata;
import java.util.Random;
public class RandomCharData {
//可以将字符转换赋值给int类型,查看其ASCII码
public static void main(String[] args) {
//随机生成纯数字
for(int i=0;i<15;i++)
createData(20);
System.out.println("---------------"); //生成数字字母
for(int i=0;i<15;i++)
createRandomCharData(20);
}
//根据指定长度生成字母和数字的随机数
//0~9的ASCII为48~57
//A~Z的ASCII为65~90
//a~z的ASCII为97~122
public static void createRandomCharData(int length)
{
StringBuilder sb=new StringBuilder();
Random rand=new Random();//随机用以下三个随机生成器
Random randdata=new Random();
int data=0;
for(int i=0;i<length;i++)
{
int index=rand.nextInt(3);
//目的是随机选择生成数字,大小写字母
switch(index)
{
case 0:
data=randdata.nextInt(10);//仅仅会生成0~9
sb.append(data);
break;
case 1:
data=randdata.nextInt(26)+65;//保证只会产生65~90之间的整数
sb.append((char)data);
break;
case 2:
data=randdata.nextInt(26)+97;//保证只会产生97~122之间的整数
sb.append((char)data);
break;
}
}
String result=sb.toString();
System.out.println(result);
} //根据指定长度生成纯数字的随机数
public static void createData(int length) {
StringBuilder sb=new StringBuilder();
Random rand=new Random();
for(int i=0;i<length;i++)
{
sb.append(rand.nextInt(10));
}
String data=sb.toString();
System.out.println(length+" random data: "+data);
}
}
//生成随机数字和字母,
public static String getStringRandom(int length) { String val = "";
Random random = new Random(); //参数length,表示生成几位随机数
for(int i = 0; i < length; i++) { String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
//输出字母还是数字
if( "char".equalsIgnoreCase(charOrNum) ) {
//输出是大写字母还是小写字母
int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
val += (char)(random.nextInt(26) + temp);
} else if( "num".equalsIgnoreCase(charOrNum) ) {
val += String.valueOf(random.nextInt(10));
}
}
return val;
}
Java随机生成定长纯数字或数字字母混合数的更多相关文章
-
java如何随机生成定长的字符串
小数,字符串.时间等示例代码 String base = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 public c ...
-
随机生成N个字符(包含数字和字母)
'************************************************************* ' Name: GetRandomString ' Purpose: 随机 ...
-
QTP_随机生成N个字符(包含数字和字母)
'************************************************************* ' Name: GetRandomString ' Purpose: 随机 ...
-
java 随机生成4位随机数
java 随机生成4位的随机数测试类 @org.junit.Testpublic void testRandom(){ String msg="您的注册码为%s,谢谢注册!"; S ...
-
生成定长随机数-可做3des密钥
3DES加解密需要密钥支持,要求为8的倍数,一般会使用32位的字母数字随机字符串作为密钥. 下面这个工具类,可用做key值的生成,详见下方代码: package test; import java.u ...
-
Java 随机生成中文姓名,手机号,邮编,住址
package lovo; import java.util.HashMap; import java.util.Map; /** * 随机生成中文姓名,性别,Email,手机号,住址 * @auth ...
-
Java随机生成18位身份证号
package com.ihome.data; import java.text.SimpleDateFormat; import java.util.Calendar; import java.ut ...
-
java随机生成字符串和校验
首先定义字符串 String a = "0123456789"; // 数字 String b = "abcdefghijklmnopqrstuvwxyz"; ...
-
java随机生成字符串(字符随机生成类 生成随机字符组合)
原文:http://www.jb51.net/article/45006.htm package p2p_web; import java.util.ArrayList; import java.ut ...
随机推荐
-
用python+selenium抓取微博24小时热门话题的前15个并保存到txt中
抓取微博24小时热门话题的前15个,抓取的内容请保存至txt文件中,需要抓取排行.话题和阅读数 #coding=utf-8 from selenium import webdriver import ...
-
CODEVS1533 互斥的数(哈希表)
给定一个集合,要求一个最大子集,满足两两之间不互斥.对两个数x,y互斥的定义是,y=p*x. 先对集合中的数从小到大排序后线性扫,若一个数x可以取则取,取完之后p*x这个数不可取.由于数字较大,使用哈 ...
-
转:Qt 嵌入式开发环境搭建
地址: http://www.cnblogs.com/lishixian/articles/3013897.html 作者:lsx_007 这里主要是记录了自己在搭建嵌入式开发环境时阅 ...
-
nutch2.3命令参数解析
nutch中可执行的命令列表 [root@ewanalysis ~]# nutch Usage: nutch COMMAND where COMMAND is one of: inject injec ...
-
内存与IO的交换【转】
用户进程的内存页分为两种: file-backed pages(文件背景页) anonymous pages(匿名页) 比如进程的代码段.映射的文件都是file-backed,而进程的堆.栈都是不与文 ...
-
Xamarin.Android 关于so包报错问题
问题描述:使用so包时报错. 解决方法: 1.保证 libs > armeabi 和 armeabi-v7a 中的so包一致. 2.去掉 x86,x86_64,arm64-v8a. 3. so的 ...
-
SHA算法:签名串SHA算法Java语言参考(SHAHelper.java)
SHAHelper.java package com.util; /** * @author wangxiangyu * @date:2017年10月16日 上午9:00:47 * 类说明:SHA签名 ...
-
BeanDefinition及其实现类
[转自 http://blog.csdn.net/u011179993 ] 目录(?)[+] 一. BeanDefinition及其实现类 BeanDefinition接口 这个接口描述bea ...
-
vsphere性能
vNUMA介绍 http://virtualbarker.com/ vSphere VMware Performance With every release of vSphere the overh ...
-
Linux下出现permission denied的解决办法
Linux下经常出现permission denied,原因是由于权限不足,有很多文章通过chmod命令更改权限为777,但是很不方便也不适合新手,简单粗暴的方法如下: 命令行中输入 sudo pas ...