【问题标题】:generating a unique number of digits生成唯一的位数
【发布时间】:2013-03-28 13:52:06
【问题描述】:

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

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 + "";
    }
}

【问题讨论】:

  • 你的主线在哪里或从哪里打电话?
  • 我可以建议某种循环吗?
  • random.nextX() 返回一个数字(可以是任意位数)。

标签: java string random concatenation


【解决方案1】:
 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。没有您要查找的内容。

【讨论】:

    【解决方案2】:

    Random.nextInt(int n) 的 API 声明:

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

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

    【讨论】:

      【解决方案3】:

      在这里使用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)));
      }
      

      注意:

      • random.nextInt 的参数是上限,而不是位数。您需要10^digits 才能获得您想要的号码。
      • 使用%03d 将为您填充任何

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-28
        • 1970-01-01
        • 1970-01-01
        • 2013-05-04
        • 2011-07-19
        • 1970-01-01
        相关资源
        最近更新 更多