int i = (int)(8+Math.random()*(20-8+1)) ; String pd=this.getRandomPassword(i); public String getRandomPassword(int len) { String result = null; while(len>=6){ result = this.makeRandomPassword(len); if (result.matches(".*[a-z]{1,}.*") && result.matches(".*[A-Z]{1,}.*") && result.matches(".*\d{1,}.*") && result.matches(".*[~!@#$%^&*\.?]{1,}.*")) { return result; } result = makeRandomPassword(len); } return "长度不得少于6位!"; } public String makeRandomPassword(int len){ char charr[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890~!@#$%^&*.?".toCharArray(); StringBuilder sb = new StringBuilder(); Random r = new Random(); for (int x = 0; x < len; ++x) { sb.append(charr[r.nextInt(charr.length)]); } return sb.toString(); }