package systemin;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class CharReader {
public static void main(String[] args) throws IOException {
// 先设置26个英文字母
char[] allChar = new char[26];
for (int i = 97; i < 123; i++) {
allChar[i - 97] = (char) i;
}
// 存放已经取到的字符。为了方便使用list以及查找已经获取过的字符,因此使用list,目标是使用它的contains方法。
List
int count = 5;
while (count > 0) {
// 取随机数,用以乘以26,得到[0,26)(大于等于零,小于26)的数字。
double numDouble = Math.random() * 26;
// 用得到的结果除以1,可得到0-25一共26个数字中的任何一个。
int position = (int) numDouble / 1;
// 判断对应位置上面的字符是否已经被取到,如果取到则直接进入下一个循环,不做保存处理。
if (contentList.contains(String.valueOf(allChar[position])))
continue;
// 如果之前没有被取到,则保存到结果集当中,并将计数数字减一。
contentList.add(String.valueOf(allChar[position]));
count--;
}
// 获取到了指定数目的不同字符,循环输出
for (int i = 0; i < contentList.size(); i++)
System.out.println(contentList.get(i));
}
}
思路:
每次输出的字母都放到集合里或数组里,每次输出之前先判断集合或数组里有没有要输出的字母,有的话就重新生成,没有的话就放到集合或数组里
实现源代码:
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Test {
public static void main(String[] args) {
System.out.println(getRandomCharacters(10));
}
//静态方法,count表示要输出的字母个数
public static List
if(count<=0 || count>26) {
return null;
}
int baseNumber = 97;
Random random = new Random();
List
while(result.size() < count) {
int number = random.nextInt(26);
char chr = (char)(baseNumber + number);
if(!result.contains(chr)) {
result.add(chr);
}
}
return result;
}
}
打印结果:
[t, a, h, j, x, k, g, i, w, b]
需要加入大写字母的话也简单:
源代码:
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Test {
public static void main(String[] args) {
System.out.println(getRandomCharacters(10));
}
public static List
if(count<=0 || count>26) {
return null;
}
int baseNumber = 97;
Random random = new Random();
List
while(result.size() < count) {
int number = random.nextInt(26);
char chr = (char)(baseNumber + number);
int type = random.nextInt(2);
if(type == 0) {
chr = Character.toUpperCase(chr);
}
if(!result.contains(chr)) {
result.add(chr);
}
}
return result;
}
}
打印结果:
[x, X, z, b, d, l, Q, t, F, o]