产生0-9 A-Z a-z
》题目要求:
》》产生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的更多相关文章
- 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.注意一点最好用 ...
- ruby中的\z与\Z区别
s = "this is\nthe name\n" puts "--------------" puts s.match(/name\Z/) puts s.ma ...
- [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+ ...
- Android立体旋转动画实现与封装(支持以X、Y、Z三个轴为轴心旋转)
本文主要介绍Android立体旋转动画,或者3D旋转,下图是我自己实现的一个界面 立体旋转分为以下三种: 1. 以X轴为轴心旋转 2. 以Y轴为轴心旋转 3. 以Z轴为轴心旋转--这种等价于andro ...
- 变量的解构赋值////////////z
变量的解构赋值 数组的解构赋值 对象的解构赋值 字符串的解构赋值 数值和布尔值的解构赋值 函数参数的解构赋值 圆括号问题 用途 数组的解构赋值 基本用法 ES6允许按照一定模式,从数组和对象中提取值, ...
- Devexpress GridControl z
http://minmin86121.blog.163.com/blog/static/4968115720144194923578/ 1 AllowNullInput=False; --Devexp ...
- 【算法】字符串匹配之Z算法
求文本与单模式串匹配,通常会使用KMP算法.后来接触到了Z算法,感觉Z算法也相当精妙.在以前的博文中也有过用Z算法来解决字符串匹配的题目. 下面介绍一下Z算法. 先一句话讲清楚Z算法能求什么东西. 输 ...
- CF #344 D. Messenger KMP/Z
题目链接:http://codeforces.com/problemset/problem/631/D 给定两个压缩形式的字符串,如a3b5a4k7这样的形式 问A在B中出现次数. 分类讨论,如果A是 ...
- CF #93 div1 B. Password KMP/Z
题目链接:http://codeforces.com/problemset/problem/126/B 大意:给一个字符串,问最长的既是前缀又是后缀又是中缀(这里指在内部出现)的子串. 我自己的做法是 ...
- Zepto源码分析之二(新旧版本zepto.Z方法的区别)
在上一节中讲到Z()方法,是在初始化函数init中直接调用zepto.Z() zepto.Z = function(dom, selector) { dom = dom || [] dom.selec ...
随机推荐
- Android LruCache(Picasso内存缓存)
Cache保存一个强引用来限制内容数量,每当Item被访问的时候,此Item就会移动到队列的头部,当cache已满的时候加入新的item时,在队列尾部的item会被回收. 如果你cache的某个值需要 ...
- ACM 对决
对决 时间限制:1000 ms | 内存限制:65535 KB 难度:0 描述 Topcoder要招进来了 n 个新同学,Yougth计划把这个n个同学分成两组,要求每组中每个人必须跟另一组中 ...
- RabbitMQ三种Exchange
Direct Exchange – 处理路由键.需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配.这是一个完整的匹配.如果一个队列绑定到该交换机上要求路由键 “dog”,则只有被标记 ...
- MongoDB的数据库基本操作(二)
创建数据库 >use mydb switched to db mydb 查看所有的数据表 >show collections system.indexes 创建数据表 >db.c ...
- [LintCode] Create Maximum Number 创建最大数
Given two arrays of length m and n with digits 0-9 representing two numbers. Create the maximum numb ...
- 19.创建如下三个类:(People类中的三个方法分别输出一些信息,ChinaPeople 和AmericanPeople类重写父类的三个方法)。
package zuoye2; public class People { protected double height; protected double weight; private Stri ...
- 重命名PDF打印文件名
Odoo系统默认打印出来的PDF文件都是以当前文档模型对象对应的模板文件名命名的,对用户来说,这样的命名很不友好. 我们希望能够将打印出来的文件名以单号命名,下面是实现这种目的的方法. 在report ...
- ubuntu上安装Eclipse时遇到的一个错误
A Java Runtime Environment (JRE) or Java Development Kit (JDK)must be available in order to run Ecli ...
- 自己编写php框架(一)
这两天一直在琢磨如何做一个php模板,将前台html页面和php代码分割开来.虽然现在市面上有各种各样的php模板,但还是想自己编写一个体验一下. 之前一直写到了将替换完php代码的含有php代码的h ...
- HDU3177 贪心
Crixalis's Equipment Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...