》题目要求:

  》》产生26个大写字母

  》》产生26个小写字母

  》》产生0-9这10个阿拉伯数字

》程序实现:

 package cn.fury.test;

 public class Test{
public static void main(String[] args) {
System.out.println((int)'a' + " " + (int)'z' + " " + (int)'A' + " " + (int)'Z');
for(char i = 'a'; i <= 'z'; i++){
System.out.print("\'" + i + "\'" + ",");
}
System.out.println();
for(char i = 'A'; i <= 'Z'; i++){
System.out.print("\'" + i + "\'" + ",");
}
System.out.println();
for(char i = '0'; i <= '9'; i++){
System.out.print("\'" + i + "\'" + ",");
}
System.out.println();
char [] alphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n',
'o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D',
'E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9'};
System.out.println(alphabet.length);
}
}

》程序改进

  》》怎么将产生的这些字符都放到一个字符数组里面

  》》notice:该程序员有点懒,持续更新中......

》 改进方案

  定义一个空数组,一个一个的将字符放到里面去;先对数组进行扩容,再将字符放到里面去

  数组扩容:Arrays.copyOf(需要扩容的数组, 扩容长度)  -->> 返回的是一个数组

》 改进程序

 package atest.dak.com;

 import java.util.Arrays;

 public class Test{
public static void main(String[] args) {
char[] letters = create_alphabet();
System.out.println(Arrays.toString(letters));
} /**
* 产生全部大写字母和全部小写字母还有0到9的阿拉伯数字
* @return TODO
*
*/
private static char[] create_alphabet() {
char x = 'a';
char y = 'A';
char z = '0';
char [] alphabet = {}; //用于存放字符
for(int i = 0; i < 26; i++) { //将26个小写字母放到alphabet数组中去
alphabet = Arrays.copyOf(alphabet, alphabet.length + 1); //扩容处理
alphabet[alphabet.length - 1] = (char)(x + i); //添加元素
}
for(int i = 0; i < 26; i++) { //将26个大写字母放到alphabet数组中去
alphabet = Arrays.copyOf(alphabet, alphabet.length + 1);
alphabet[alphabet.length - 1] = (char)(y + i);
}
for(int i = 0; i <= 9; i++) { //将10个阿拉伯数字放到alphabet中去
alphabet = Arrays.copyOf(alphabet, alphabet.length + 1);
alphabet[alphabet.length - 1] = (char)(z + i);
}
// System.out.println(Arrays.toString(alphabet));
return alphabet;
} }

》 程序改进

  》》 提醒用户输入一个整型数字,控制台返回指定个数的字母和阿拉伯数字,要求不重复

》 改进方案

  》》 通过产生随机数来确定存放字母和阿拉伯数字的char数组的索引,再通过同该数组长度一样的一个boolean数组来存放每个元素是否选中的状态,每选中一个元素后就将这个元素的状态变成选中状态,从而防止再次选中

》 改进程序

 package atest.dak.com;

 import java.util.Arrays;
import java.util.Random;
import java.util.Scanner; public class Test{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入需要产生的验证码的数量:");
int number = scan.nextInt();
char [] ran_verification_code = create_verification_code(number);
System.out.println("随机产生的" + number + "个验证码为: " + Arrays.toString(ran_verification_code));
} /**
* 随机产生指定数量的验证码
* @param number TODO
* @return TODO
*
*/
private static char[] create_verification_code(int number) {
char[] letter = create_alphabet(); //存放所有的字母
boolean [] judge = new boolean[letter.length]; //存放所有字母是否被选中的状态
char[] ran_num = {}; //存放随机产生的验证码
int index = 0;
Random random = new Random();
for(int i = 0; i < number; i++) {
do {
index = random.nextInt(letter.length);
} while(judge[index]);
judge[index] = true; //没选中一个字母,就将这个字母的状态变成选中
ran_num = Arrays.copyOf(ran_num, ran_num.length + 1); //扩容处理
ran_num[ran_num.length - 1] = letter[index]; //添加元素
}
// System.out.println(Arrays.toString(ran_num));
return ran_num;
} /**
* 产生全部大写字母和全部小写字母还有0到9的阿拉伯数字
* @return TODO
*
*/
private static char[] create_alphabet() {
char x = 'a';
char y = 'A';
char z = '0';
char [] alphabet = {}; //用于存放字符
for(int i = 0; i < 26; i++) { //将26个小写字母放到alphabet数组中去
alphabet = Arrays.copyOf(alphabet, alphabet.length + 1); //扩容处理
alphabet[alphabet.length - 1] = (char)(x + i); //添加元素
}
for(int i = 0; i < 26; i++) { //将26个大写字母放到alphabet数组中去
alphabet = Arrays.copyOf(alphabet, alphabet.length + 1);
alphabet[alphabet.length - 1] = (char)(y + i);
}
for(int i = 0; i <= 9; i++) { //将10个阿拉伯数字放到alphabet中去
alphabet = Arrays.copyOf(alphabet, alphabet.length + 1);
alphabet[alphabet.length - 1] = (char)(z + i);
}
// System.out.println(Arrays.toString(alphabet));
return alphabet;
} }

》 程序改进

  》》 提醒用户输入验证码,判断用户是否输入正确;如果输入错误返回正确的个数(位置和内容都正确才算正确)

  》》 待改进中......2017年3月1日10:48:28

产生0-9 A-Z a-z的更多相关文章

  1. hdu4282 x^z+y^z+x*y*z=k 解的个数

    题意:      x^z + y^z + x*y*z = k; (x < y ,z > 1),给你一个k问有多少组解. 思路:        暴力枚举z,y,然后二分查找x.注意一点最好用 ...

  2. ruby中的\z与\Z区别

    s = "this is\nthe name\n" puts "--------------" puts s.match(/name\Z/) puts s.ma ...

  3. [Mathematics][Fundamentals of Complex Analysis][Small Trick] The Trick on drawing the picture of sin(z), for z in Complex Plane

    Exercises 3.2 21. (a). For $\omega = sinz$, what is the image of the semi-infinite strip $S_1 = \{x+ ...

  4. Android立体旋转动画实现与封装(支持以X、Y、Z三个轴为轴心旋转)

    本文主要介绍Android立体旋转动画,或者3D旋转,下图是我自己实现的一个界面 立体旋转分为以下三种: 1. 以X轴为轴心旋转 2. 以Y轴为轴心旋转 3. 以Z轴为轴心旋转--这种等价于andro ...

  5. 变量的解构赋值////////////z

    变量的解构赋值 数组的解构赋值 对象的解构赋值 字符串的解构赋值 数值和布尔值的解构赋值 函数参数的解构赋值 圆括号问题 用途 数组的解构赋值 基本用法 ES6允许按照一定模式,从数组和对象中提取值, ...

  6. Devexpress GridControl z

    http://minmin86121.blog.163.com/blog/static/4968115720144194923578/ 1 AllowNullInput=False; --Devexp ...

  7. 【算法】字符串匹配之Z算法

    求文本与单模式串匹配,通常会使用KMP算法.后来接触到了Z算法,感觉Z算法也相当精妙.在以前的博文中也有过用Z算法来解决字符串匹配的题目. 下面介绍一下Z算法. 先一句话讲清楚Z算法能求什么东西. 输 ...

  8. CF #344 D. Messenger KMP/Z

    题目链接:http://codeforces.com/problemset/problem/631/D 给定两个压缩形式的字符串,如a3b5a4k7这样的形式 问A在B中出现次数. 分类讨论,如果A是 ...

  9. CF #93 div1 B. Password KMP/Z

    题目链接:http://codeforces.com/problemset/problem/126/B 大意:给一个字符串,问最长的既是前缀又是后缀又是中缀(这里指在内部出现)的子串. 我自己的做法是 ...

  10. Zepto源码分析之二(新旧版本zepto.Z方法的区别)

    在上一节中讲到Z()方法,是在初始化函数init中直接调用zepto.Z() zepto.Z = function(dom, selector) { dom = dom || [] dom.selec ...

随机推荐

  1. ACM: A Simple Problem with Integers 解题报告-线段树

    A Simple Problem with Integers Time Limit:5000MS Memory Limit:131072KB 64bit IO Format:%lld & %l ...

  2. POJ - Ubiquitous Religions

    Description 当今世界有很多不同的宗教,很难通晓他们.你有兴趣找出在你的大学里有多少种不同的宗教信仰. 你知道在你的大学里有n个学生(0 < n <= 50000) .你无法询问 ...

  3. Flex弹性布局在移动设备上的应用

    引文 首先,我们有表格布局.当不考虑语义并且利用一些适当的嵌套和其他技巧,我们可以用table建立具有一定功能的布局. 然后是现在大多数人都在使用的浮动布局.我们可以使用任何我们想用的元素,但浮动并不 ...

  4. This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes. This will cause an exception in a future release.

    一,经历 <1> 使用SDWebImage下载 成功图片后,将图片设置给 self.imageView.image,提示如题所示的错误提示. <2>第一反应就是慢慢注释掉代码进 ...

  5. Python中的socket 模块

    Python 提供了两个基本的 socket 模块.第一个是 Socket,它提供了标准的 BSD Sockets API.第二个是 SocketServer, 它提供了服务器中心类,可以简化网络服务 ...

  6. PS教程1000例

    http://www.missyuan.com/thread-446934-1-1.html Photoshop绘制逼真头发发丝效果http://www.missyuan.com/thread-446 ...

  7. CentOS6设置密码过期时间

    #密码过期时间180天chage -M 180 rootchage -l rootchage -M 180 gwchage -l gw

  8. PCTUSED和PCTFREE对数据操作的影响

    1概念理解 首先PCTUSED和PCTFREE都是针对数据块的存储属性,单位都是%.其中PCTFREE决定了数据块什么时候从free list中移除,系统就不可以再往该数据块中插入数据,对于数据块中已 ...

  9. java web重定向与转发

    首先定义一下这两个词: 重定向是将用户从当前页面或servlet定向到另外一个jsp页面或者servlet 转发是将用户对当前jsp页面或者servlet对象的请求转发给另外一个jsp页面或者serv ...

  10. java 中的2个接口 Comparable和Comparator

    像Integer.String这些类型的数据都是已经实现Comparable接口的,所以对这些类型可以直接通过Arrays.sort(...)和Collections.sort(...)方法进行排序. ...