亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

作業(利用ASCii碼)

代碼如下:求解為什么生成的隨機字符串里有a~z意外的字符?我的random函數哪里出錯了?

//練習,隨機字符串sort方法;

public void testSort3(){

List<String> stringList2= new ArrayList<String>();

Random random = new Random();

String s = new String();

for(int i=0;i<10;i++){

do{

int s_long = s.length();

Integer k=random.nextInt(10);

s_long=k;

//調用字符串生成函數;輸入s_long取相應長度隨機字符串;

s=randomString(s_long);

}while(stringList2.contains(s));

stringList2.add(s);

}

System.out.println("----------before sort()----------");

for(String string:stringList2){

System.out.println("隨機字符串:"+string);

}

Collections.sort(stringList2);

System.out.println("----------after sort()----------");

for(String string:stringList2){

System.out.println("隨機字符串:"+string);

}

}

public String randomString(int k){

String s="";

Random r=new Random();

for(int i=0;i<k;i++){

//a~z : 97~122

s=s+(char)Math.abs(r.nextInt()%26+97);

}

return s;

}

結果如下:

https://img1.sycdn.imooc.com//5c75513300015b9404200389.jpg

正在回答

2 回答

r.nextInt()%26+97的值不一定在97~122之間啊

改成r.nextInt(26)%26+97 就可以了

0 回復 有任何疑惑可以回復我~
#1

甲魚要學習 提問者

謝謝?。?/div>
2019-03-11 回復 有任何疑惑可以回復我~

我和你思路一樣利用ascii碼

for(int j=0 ;j<10;j++) {

//創建char類型的數組用于存儲十個隨機生成的字符

char[] chars = new char[10];

for(int i=0 ;i<10;i++) {

//生成一個隨機的Assic碼值

int b = ran.nextInt(125);

//判斷Asiic碼值是否位于48-57或65-90或97-122之間

//Assic碼值位于48-57或65-90或97-122之間為0-9、a-z、A-Z之間的字符

if((b>47 && b<58) || (b>64 && b<91) || (b>96&&b<123)) {

char a = (char)b;

chars[i] = a;

continue;

}

i--;

}

//將符合條件的字符數組轉換為字符串

str = String.copyValueOf(chars);

//將字符串存入集合strList

strList.add(str);


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第三季
  • 參與學習       409766    人
  • 解答問題       4543    個

Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧

進入課程

作業(利用ASCii碼)

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號