『壹』 java實現輸出指定長度的隨機字元(大小寫字母和數字)遇到問題
程序輸出錯誤的原因(見圖)
『貳』 如何用java隨機生成一個字母
char c=(char)(int)(Math.random()*26+97);
System.out.println(c);
通過隨機函數生成,字母對應的int整型數字,然後轉換才char類型的字母。
或
tring chars = "abcdefghijklmnopqrstuvwxyz";
System.out.println(chars.charAt((int)(Math.random() * 26)));
根據chars 隨機截取其中的一個字母。
定義隨機字母之前調用
import java.util.Arrays;
產生隨機數的代碼為:
char cha[]={'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'};
char ch[]=new char[5];
for(int i=0;i<ch.length;i++)
{
int index;
index=(int)(Math.random()*(cha.length));
ch[i]=cha[index];
}
System.out.println(Arrays.toString(ch));
這個是產生5個隨機字戚升母在A-Z的范圍
『叄』 java中的數字,字母,漢字如何隨機生成
數字,字母比較簡單。
//手寫的,省略了一部分String szzm = "0123...789abc...xyzABC...XYZ"; StringBuilder bu = new StringBuilder();for(int i = 0;i<6;i++){ bu.append(szzm.charAt(new Random().nextInt(szzm.length())));}System.out.println(bu.toString());
漢字復雜一些。我的方法是數字區間,19968~40869 之間 int 轉char 都會變成漢字。
不過這個范圍有點大,2w多漢字,有繁體的,還有生僻字。 如果不怕麻煩,漢字也可和數字一樣,弄個漢字表。
StringBuilder bu = new StringBuilder();int base = 19968;int qujian = 40869 - 19968;for(int i = 0;i<6;i++){ int rand = base + new Random().nextInt(qujian); bu.append((char)rand);}System.out.println(bu.toString());