关于java:具有随机int值的字段

Field with random int value

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
    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 +"
"
+ account0 +"
"
+ account1);
    }

}

改变return String.valueOf(rand);

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

原因:

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


使用此代码:

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

现在你代表Random实例。

而是打印随机的下一个int的数学绝对值的String表示将起到作用。

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


使用

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

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