【问题标题】:Field with random int value具有随机 int 值的字段
【发布时间】:2014-01-10 19:41:39
【问题描述】:

我正在编写一个模拟简单银行帐户活动的程序,我想知道如何做到这一点,以便如果我创建一个没有任何参数的新帐户,它会接收显示为字符串的随机 7 位标识号。按照我的方式,我只在输出中收到 java.util.Random@2a0364ef。 期待有关此问题的任何帮助和其他 cmets,因为这是我在此网站上发布的第一个问题。

    import java.util.Random;

    class Account {

    String id;
    double stan;
    int num;
    static int counter;

    public Account() {
        **id = randomId().toString();**
        stan = 0;
        num = ++counter;

    }

    public Account(String id) {
        this.id = id;
        stan = 0;
        num = ++counter;

    }

    public Account(String id, double mon) {
        stan = 0;
        this.id = id;
        this.stan = mon;
        num = ++counter;

    }

    **static String randomId() {
        Random rand = new Random(7);
        return String.valueOf(rand);**
    }

    String getId() {
        return id;
    }

    double getStan() {
        return stan;
    }

    int getNum() {
        return num;
    }

    @Override
    public String toString() {
        return "Account's id " + getId() + " and balance " + getStan();
    }
}

public class Exc7 {

    public static void main(String[] args) {
        Account account = new Account("0000001"),
                acount0 = new Account("0000002", 1000),
                acount1 = new Account();




        System.out.println(account + "\n" + account0 + "\n" + account1);
    }

}

【问题讨论】:

    标签: java random object-to-string


    【解决方案1】:

    使用此代码:

    Random rand = new Random(7);
    return String.valueOf(Math.abs(rand.nextInt()));
    

    现在您代表Random 实例。

    而不是打印随机数的下一个int 的数学绝对值的String 表示就可以了。

    Math.abs 部分很重要,否则您可能会得到负数。

    【讨论】:

    • 首先,谢谢。其次,我还错误地认为如果我将 7 放入 Random 中,它会给我一个七位数的数字。我应该只输入 9999999 以接收此范围内的数字还是其他方式?
    • @Konrad 不客气!老实说,Random 构造函数也让我分心并欺骗了我:确实,它没有定义位数,而是定义了随机种子。您可以以特定位数开始 here - 否则只需截断您的 String
    【解决方案2】:

    使用

    return String.valueOf(rand.nextInt());
    

    否则,您将获得Random 对象的字符串表示形式,而不是它可以生成的随机int

    【讨论】:

      【解决方案3】:

      更改return String.valueOf(rand);

       return String.valueOf(rand.nextInt());
      

      原因

      您将随机对象传递给valueOf 方法,而不是您需要的值。在其上调用nextInt() 方法获取所需的随机值。

      【讨论】:

        猜你喜欢
        • 2019-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-12
        • 2017-04-17
        • 1970-01-01
        相关资源
        最近更新 更多