java随机生成20个长度为12-20的大小写字母混杂的“单词”,按字典顺序进行输出

java随机生成20个长度为12-20的大小写字母混杂的“单词”,按字典顺序进行输出

字母的字典顺序:大写字母小于小写字母

  'A'~ 'Z'对应ASCII值:65~90 


 'a'~'z'对应ASCII值:97~122

程序运行截图:

1随机生成一个长度为12-20的大小写字母混杂的“单词”

/**
 * 随机获取长度为12~20的大小写字母混杂的“单词”
 */
private String randomWord() {
// 12~20长度,包含12及20
int length = 12 + (int) (Math.random() * 9);
String word = "";
for (int i = 0; i < length; i++) {
word += (char) randomChar();
}
return word;
}
/**
 * 随机获取'a'~'z' 和 'A'~ 'Z'中的任一字符
 * 
 * 'A'~ 'Z'对应ASCII值:65~90
 * 
 * 'a'~'z'对应ASCII值:97~122
 * 
 * @return
 */
private byte randomChar() {
// 0<= Math.random()< 1
int flag = (int) (Math.random() * 2);// 0小写字母1大写字母
byte resultBt;
if (flag == 0) {
byte bt = (byte) (Math.random() * 26);// 0 <= bt < 26
resultBt = (byte) (65 + bt);
} else {
byte bt = (byte) (Math.random() * 26);// 0 <= bt < 26
resultBt = (byte) (97 + bt);
}
return resultBt;
}

2.for循环生成20个长度为12-20的大小写字母混杂的“单词”

3.按字典顺序进行排序

/**
 * 
 * 由小到大排序
 * 
 * 从后向前冒泡
 * 
 * @param arr
 */
public void bubbleSort(String[] arr) {
if (arr == null || arr.length == 0)
return;
for (int i = 0; i < arr.length - 1; i++) {
// 循环之后下标i处为数组中最小的元素
for (int j = arr.length - 1; j > i; j--) {
if (!compareString(arr[j], arr[j - 1])) {
swap(arr, j - 1, j);
}
}
}
}
/**
 * 比较两个字符串大小
 * 
 * @param param1
 * @param param2
 * @return true:param1 > param2 false:param1 <= param2;
 */
private boolean compareString(String param1, String param2) {
char[] paramC1 = param1.toCharArray();
char[] paramC2 = param2.toCharArray();
// 获取最短字符串长度
int minLength = paramC1.length < paramC2.length ? paramC1.length
: paramC2.length;
for (int i = 0; i < minLength; i++) {
if (paramC1[i] == paramC2[i]) {

} else if (paramC1[i] > paramC2[i]) {
return true;
} else {
return false;
}
}
return paramC1.length > paramC2.length;

}
/**
 * 交换元素
 * 
 * @param arr数组
 * @param i
 *            数组下标
 * @param j
 *            数组下标
 */
public void swap(String[] arr, int i, int j) {
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}

4.测试类

public class StringDemo {

public static void main(String[] args) {
StringDemo localDemo = new StringDemo();
String[] words = new String[20];
System.out.println("随机生成的20个单词:");
for (int i = 0; i < words.length; i++) {
words[i] = localDemo.randomWord();
System.out.println(words[i]);
}
localDemo.bubbleSort(words);
System.out.println();
System.out.println("按字典顺序打印:");
for (String word : words) {
System.out.println(word);
}
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-05-14
package www;

public class Test6_5_2 {

public static void main(String[] args) {
// TODO 自动生成的方法存根
int origin1=65;
int end1 =90;
int origin2=97;
int end2=122;
int irand1 = (int)(Math.random()*( end1 - origin1 ));
int irand2 = (int)(Math.random()*( end2 - origin2 ));
irand1 += origin1;
irand2 += origin2;
int suiji=(int)(Math.random()*3);
if(suiji<=1){
System.out.println("输出随机字母:"+irand1);
}else{
System.out.println("输出随机字母:"+irand2);
}
}

}本回答被网友采纳
相似回答