》题目要求:

  》》产生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. 显式Intent和隐式Intent

    http://blog.csdn.net/qs_csu/article/details/7995966 对于明确指出了目标组件名称的Intent,我们称之为“显式Intent”. 对于没有明确指出目标 ...

  2. Codeforces Round #215 (Div. 2) A. Sereja and Coat Rack

    #include <iostream> #include <vector> #include <algorithm> using namespace std; in ...

  3. Bootstrap_Datatable Ajax请求两次问题的解决

    最近一个项目中使用JQuery Datatable,用起来比较方便,但在测试过程中,发现当条件改变时,有时查询结果中的数据不正确. 使用FireBug跟踪时,发现在使用Ajax请求时,点击一次搜索按钮 ...

  4. ArcGIS初步 系列视频教程

    本人才疏学浅,但鉴于较少的ArcGIS10以上版本的学习视频,所以利用业余时间做了这么个业余的视频系列教程,本随笔提供在线观看地址与720P原版下载地址. 1认识ArcGIS 优酷在线地址  (优酷清 ...

  5. AsyncTask的使用

    简单的AnsyTask的使用demo 1.定义一个模拟网络操作的类 package com.example.administrator.myapplication; /** * Created by ...

  6. ubuntu 上安装 NASM 汇编开发工具

    一般系统自带NASM可通过 输入 nasm -version 检查,若是没有 可用下述指令安装: sudo apt-get install nasm 安装过程执行完毕后 再次输入 : nasm -ve ...

  7. awesome-scala

    https://github.com/lauris/awesome-scala Awesome Scala  A community driven list of useful Scala libra ...

  8. JSOUP选择器语法说明

    jsoup 是一款基于Java 的HTML解析器,可直接解析某个URL地址或HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据.jso ...

  9. xshell连接本地虚拟机

    打开虚拟机输出命令ifconfig 然后使用xshell,连接这个地址即可 如果没有ip地址的话,这可以用“ifconfig eth0 ip地址 比如ifconfig eth0 192.3168.16 ...

  10. 演示一个使用db vault进行安全控制的示例

    1.确认数据库版本 2.安装db vault组件 通过DBCA配置db vault: 3.创建测试用户及表 4.创建域并加入用户 5.测试演示