1

下面的代码编译得很好,但它们不会生成位数

ganerateNewRandom("aaaa", 3)

结果将是aaa435

下面的代码编译得很好,但它们不会生成位数

import java.util.*;

public class Student
{
    private String studentId;

    private String name;

    private Random random;


    public Student( String name)

    {
        studentId = "UnKnow";

        this.name = name;

        random = new Random();

    }

    public String ganerateNewRandom(String prefix, int number)

    {

        int index = random.nextInt(number);

        return prefix + number + "";
    }
}
4

3 回答 3

4
 public String ganerateNewRandom(String prefix, int number) {  //sic

    StringBuffer ret = new StringBuffer(prefix);

    for(int i=0;i<number;i++) ret.append(random.nextInt(1000));

    return ret.toString();

}

在您上面引用的情况下,nextInt(3) 将返回 0、1 或 2。没有您要查找的内容。

于 2013-03-28T13:57:19.123 回答
2

状态API Random.nextInt(int n)

返回介于 0(包括)和指定值(不包括)之间的伪随机、均匀分布的 int 值

如果要生成 3 个随机数,请创建一个for-loop以附加n生成数字Random并将其附加到prefix.

于 2013-03-28T14:00:16.163 回答
1

可能值得String.format在这里使用:

static private Random random = new Random();

public static String ganerateNewRandom(String prefix, int digits) {
  return String.format("%s%03d", 
                       prefix, 
                       random.nextInt((int)Math.pow(10, digits)));
}

笔记:

  • 参数 torandom.nextInt是上限,而不是位数。你需要10^digits得到你想要的号码。
  • 使用%03d将为您填充任何小于 100 的数字。
于 2013-03-28T14:28:32.573 回答