java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:69

时间:2019-05-07 06:28:25

标签: java jsp

String AlphaNumeric = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

StringBuilder sb = new StringBuilder();
for(int i =0; i<8; i++)
{
    int index = (int)(AlphaNumeric.length() * Math.random());
    sb.append(AlphaNumeric.charAt(index));
}
String str = sb.toString();

1 个答案:

答案 0 :(得分:2)

如前所述,该错误正在尝试访问一些不存在的索引。

考虑到String alphaNumeric的长度,可以使用Random类在该范围内找到一个值。

Random rnd = new Random();
StringBuilder sb = new StringBuilder();

final int len = alphaNumeric.length();

// generate 8 random characters, adding each random character
//  to the collector
for (int i = 0; i < 8; ++i) {
  // get a random value within the range, 0...N exclusive
  int index = rnd.nextInt(len);
  sb.append(alphaNumeric.charAt(index));
}

使用Random可以选择给定范围内的随机值。

javadoc for Random

  

公共int nextInt(与int绑定)

     

从该随机数生成器的序列中返回一个伪随机数,该整数值在0(含)和指定值(不含)之间均匀分布。 nextInt的一般约定是伪随机生成并返回指定范围内的一个int值。所有绑定的可能的int值均以(近似)相等的概率产生。

Example may be seen at this link