黑马程序员技术交流社区

标题: 一道练习题,获取随机字符数组,并转化成字符串 [打印本页]

作者: yeluoxingye    时间: 2017-3-1 23:26
标题: 一道练习题,获取随机字符数组,并转化成字符串
要求:
获取长度为5的随机字符串,字符串由随机的4个大写英文字母和1个0-9之间(包含0和9)的整数组成

public class Test {
public static void main(String[] args) {
  // TODO Auto-generated method stub
  //(1)定义长度为26,元素值为26个大写英文字母的数组chs
  char[] chs = new char[26];
  for (int i = 0; i < chs.length; i++) {
   chs[i] = (char)(i + 65);
  }
  
  //(2)传递数组chs调用getStr(char[] chs)方法,获取返回值,并在控制台打印返回值
  System.out.println(getStr(chs));
}

//定义方法,获取长度为5的随机字符串,字符串由随机的4个大写英文字母和1个0-9之间(包含0和9)的整数组成
public static String getStr(char[] chs) {
  Random r = new Random();
  String s = new String(chs);
  char[] arr = new char[5];
  for (int i = 0; i < arr.length; i++) {
   char c = (char)(r.nextInt(43) + 48);
   if (s.indexOf(c) != -1) {
    if (i != arr.length - 1) {
     arr[i] = c;
    }else {
     int count = 0;
     for (int j = 0; j < i; j++) {
      if (arr[j] >= '0' && arr[j] <= '9') {
       count++;
      }
     }
     if (count == 0) {
      i--;
     }else {
      arr[i] = c;
     }
    }
   }else if (c >= '0' && c <= '9') {
    int count = 0;
    for (int j = 0; j < i; j++) {
     if (arr[j] >= '0' && arr[j] <= '9') {
      count++;
     }
    }
    if (count == 0) {
     arr[i] = c;
    }else {
     i--;
    }
   }else {
    i--;
   }
  }
  
  String s2 = new String(arr);
  
  return s2;
}

}


作者: 江西人    时间: 2017-3-1 23:37
后面没有注释,新手看不太懂

作者: 阮泰伟    时间: 2017-3-2 00:38
各位新老司机好,老司机带带我

作者: CMainFrame    时间: 2017-3-2 10:57
加注释是个好习惯,让大家都能看懂





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2