首页 > 其他 > 详细

随机生成字符串

时间:2014-04-08 22:38:13      阅读:577      评论:0      收藏:0      [点我收藏+]

目标:随机生成9位字符的字符串,前3位为小写字母,中间3位为数字,最后3位为大写字母。

 

思路:

  我们知道,在Java里面能随机的只有数字,而为了能随机字母,所以我们要把字母和数字搭上关系。这很容易就会想到ASCII码,所以我们找出小写字母ASCII的范围,然后随机数字,再将数字通过ASCII码表转化为对应的字母,Let‘s do it!

  首先我们来看看ASCII与数字之间的转换,首先char word;char变量可以储存单个的字符,而我们所需要用到的大小写字母和数字刚好可以储存,求多码爹(日语),整数不是应该用int来储存么?不完全是,就像字符串也可以储存数字一样,只是我们把它当成char而已,下面我们来试试:

bubuko.com,布布扣
1 public class Demo{
2     public static void main(String[] args){
3         char word =‘a‘;
4         System.out.println(word);
5         System.out.println((int)word);   //强制转换,在变量前加上强制转换的类型
6     }
7 }
bubuko.com,布布扣

  运行结果:

a
97

  从运行的结果可以看到‘a‘在进行强制转换后就变成了97,同理可得98对应的是‘b‘…………

  同样数字也可以作为字符放进char类型变量里面,来试试:

bubuko.com,布布扣
1 public class Demo{
2     public static void main(String[] args){
3         char word =‘0‘;
4         System.out.println(word);
5         System.out.println((int)word);
6     }
7 }
bubuko.com,布布扣

  运行结果:

0
48

  ‘0‘在ASCII码表里面就是48,下面来解决问题:

bubuko.com,布布扣
 1 import java.util.Random;  //导入Random类
 2 
 3 public class RandomWords {
 4     public static void main(String[] args) {
 5         char[] words = new char[9];         //建立words数组,并初始化
 6         Random random = new Random();  //实例化一个Random对象
 7 
 8         for (int i = 0; i < 9; i++) {
 9             if (i < 3) {
10                 words[i] = (char) (random.nextInt(26) + (int)‘a‘);
11             } else if (i > 5) {
12                 words[i] = (char) (random.nextInt(26) + (int)‘A‘);
13             } else {
14                 words[i] = (char) (random.nextInt(10)+(int)‘0‘);
15             }
16             System.out.print(words[i]);
17         }
18     }
19 }
bubuko.com,布布扣

  问题解决,首先说

random.nextInt(26)

  Random的nextInt(26)的作用是在0-25之间随机一个数。

(int)‘a‘

  作用是将‘a‘强制转换为int,也就是65,然后加上0-25之间的随机数,也就得到了26个小写字母对应的ASCII码

(char) (random.nextInt(26) + (int)‘a‘)

  再将ASCII码转换成char,然后给words[]赋值,最后输出。

 

  最后我将代码进行了优化,写了一个RandomChar类,输入起始字符和范围就会自动返回一个随机的字符:

bubuko.com,布布扣
import java.util.Random;

class RandomChar {
    char getRandom(char startChar, int range) {     //输入起始字符startChar,输入范围range
        Random random = new Random();
        return (char) (random.nextInt(range) + (int) startChar);
    }
bubuko.com,布布扣

  最终的代码就是这样:

bubuko.com,布布扣
 1 public class RandomWords {
 2     public static void main(String[] args) {
 3         char[] words = new char[9];
 4         RandomChar randomChar = new RandomChar();
 5 
 6         for (int i = 0; i < 9; i++) {
 7             if (i < 3) {
 8                 words[i] = randomChar.getRandom(‘a‘, 26);
 9             } 
10             else if (i > 5) {
11                 words[i] = randomChar.getRandom(‘A‘, 26);
12             } else {
13                 words[i] = randomChar.getRandom(‘0‘, 10);
14             }
15             System.out.print(words[i]);
16         }
17     }
18 }
bubuko.com,布布扣

 

  Tip:很多强制转换

随机生成字符串,布布扣,bubuko.com

随机生成字符串

原文:http://www.cnblogs.com/srun/p/3652682.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!