》题目要求:

  》》产生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. [Leetcode] Recover Binary Search Tree

    Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...

  2. js中继承的几种用法总结(apply,call,prototype)

    一,js中对象继承 js中有三种继承方式 1.js原型(prototype)实现继承 <SPAN style="BACKGROUND-COLOR: #ffffff">& ...

  3. 封装一个通用递归算法,使用TreeIterator和TreeMap来简化你的开发工作。

    在实际工作中,你肯定会经常的对树进行遍历,并在树和集合之间相互转换,你会频繁的使用递归. 事实上,这些算法在逻辑上都是一样的,因此可以抽象出一个通用的算法来简化工作. 在这篇文章里,我向你介绍,我封装 ...

  4. HDU 2824 简单欧拉函数

    1.HDU 2824   The Euler function 2.链接:http://acm.hdu.edu.cn/showproblem.php?pid=2824 3.总结:欧拉函数 题意:求(a ...

  5. hdu 1715 大菲波数 高精度和运算,水

    1.hdu 1715  大菲波数 2.链接:http://acm.hdu.edu.cn/showproblem.php?pid=1715 3.总结:水 #include<iostream> ...

  6. winform让子窗体始终居于父窗体的中间

    实例: FormMsg msg = new FormMsg(); msg.TopMost = True; msg.StarPosition = FormStarPosition.Centerparen ...

  7. android中的ActionBar和ToolBar

    一.ToolBar 1.概述 Google在2015的IO大会上发布了系列的Material Design风格的控件.其中ToolBar是替代ActionBar的控件.由于ActionBar在各个安卓 ...

  8. Effective STL(第7条)

    第7条:如果容器中包含了通过new操作创建的指针,切忌在容器对象析构前将指针delete掉 //向一个vector中添加多个new出来的对象 void doSomething(){ vector< ...

  9. oracle 连接查询,和(+)符号的用法

    --连接查询 左链接.右链接,全链接 --内链接select e.account 用户名, e.empname 名称, c.comname 公司名称  from employee e inner jo ...

  10. IO字 节流/字符流 读取/写入文件

    流是指一连串流动的数据信号,以先进,先出的方式发送和接收的通道 流的分类根据方向分为输入流所有接收,获得,读取的操作都是属于输入流所有的输入流名字都带有input或Reader 输出流所有发送,写的操 ...