package?net.test;
import?java.util.*;
public?class?Stringlist?{
????String?str;
????public?void?Addlist(){
????????List<String>?po=new?ArrayList<String>();
????????int?y;
????????Random?random=new?Random();
????????y=random.nextInt(9)+1;
????????for?(int?i=0;i<10;i++){
???????????StringBuffer?str=new?StringBuffer();
????????????for?(int?j=0;j<y;j++){
????????????????int?x;
????????????????x=random.nextInt(75)+48;
????????????????if?(x>57&&x<65||x>90&&x<97){
????????????????????continue;
????????????????}
????????????????char?m=(char)x;
???????????????str.append(m);
????????????}
????????????po.add(str.toString());
????????}
????????System.out.println("----------排序前---------");
????????for?(String?obj:po){
????????????System.out.println(obj);
????????}
????????System.out.println("----------排序后---------");
????????Collections.sort(po);
????????for?(String?obj:po){
????????????System.out.println(obj);
????????}
????}
????public?static?void?main(String[]?args){
????????Stringlist?stringlist=new?Stringlist();
????????stringlist.Addlist();
????}
}
2019-01-03
我是這樣寫的,也是用ASCII碼值轉換。代碼放下面了。
用ASCII碼值不如用 一個串里包含所有大小寫字母后再隨機,我看見這個課有人這樣寫
你的這個代碼產生的串的長度是一樣的,而且感覺你判斷那有問題,要不是大小寫字母,就i++進行下一次循環,x重新賦值,一直到大小寫字母的時候在往下進行,那要是恰巧生成x的時候沒有一個是在大小寫字母之間的,那list里面就沒有值啊,而且 x = random.nextInt(75)+48,為啥要在0-122之間生成一個隨機數??以上純屬個人分析。
/**
? * 隨機生成10個字符串:這些字符串長度可以不同,字符可以重復,但是不能有兩個相同的字符串 然后對隨機生成的10個字符串排序,要求輸出排序前與排序后的列表序列
? */
?public void StringSort2() {
??Random r = new Random();
??int[] pool = new int[3];
??
??for (int j = 0; j < 10; j++) {
???String str = new String();
???do {
????/* 長度隨機 */
????int lengthRand = r.nextInt(10) + 1; // 產生1-10(包括10)之間的隨機數
????/* 字符隨機 */
????for (int i = 0; i < lengthRand; i++) {
?????int a = (int)(r.nextDouble() * 26) + 97; // 小寫字母ASCII碼值序列
?????int b = (int)(r.nextDouble() * 26) + 65; // 大寫字母ASCII碼值序列
?????int c = r.nextInt(10); // 0-9的數字
?????pool[0] = a;
?????pool[1] = b;
?????pool[2] = c;
?????int temp = pool[r.nextInt(3)];
?????if (temp > 9) {
??????char temps = (char) temp;
??????str = str+temps;
?????} else {
??????str = str+temp;
?????}
????}
???} while (stringSort.contains(str));
???stringSort.add(str);
???System.out.println("添加了字符串"+str);
??}
??System.out.println("排序前:");
??for (String str2:stringSort) {
???System.out.println(str2);
??}
??Collections.sort(stringSort);
??System.out.println("排序后:");
??for (String str2:stringSort) {
???System.out.println(str2);
??}
?}