Java 随机生成对象

Java 随机生成对象,java,object,random,Java,Object,Random,我得准备一些工作直到明天,但我被卡住了。(代码中的所有名称都是德语,不要混淆:) 这是我的构造函数类,用于一个名为“Karte”(card)的对象 现在还有另一个类,它应该生成一个对象,由多张卡组成。 通常的语法是 Karte name = new Karte(); // (random stuff here); 但是如何让类生成具有随机名称的多个对象呢?如果我尝试在一个循环中对每个循环使用这种代码,它只会覆盖上一个循环 我如何给它们随机名称,或者甚至从字符串[]中选择?您可以创建一个工厂方法

我得准备一些工作直到明天,但我被卡住了。(代码中的所有名称都是德语,不要混淆:)

这是我的构造函数类,用于一个名为
“Karte”
(card)的对象

现在还有另一个
,它应该生成一个
对象
,由多张卡组成。 通常的语法是

Karte name = new Karte(); // (random stuff here);
但是如何让类生成具有随机名称的多个对象呢?如果我尝试在一个
循环中对每个
循环使用这种代码,它只会覆盖上一个循环


我如何给它们随机名称,或者甚至从
字符串[]
中选择?

您可以创建一个工厂方法,使用java.util.random来选择属性

或者您可以在Karte中创建空构造函数,该构造函数将随机分配值:

Karte() {
    Random rd = new Random();
    Farbe[] farbes = Farbe.values();
    f = farbes[rd.nextInt(farbes.length)];
    Wert[] werts = Wert.values();
    w = werts[rd.nextInt(werts.length)];
}
如果您正在查看如何根据名称存储卡,您可以将它们映射到一个字符串,如

//Create collection for storing karts
Map<String, Karte> karts = new HashMap<String, Karte>();
for(int i=0; i<10; i++) {
    Karte k = new Karte()
    karts.put((k.getWert().name()+" "+k.getFarbe.name()), k);
}
//创建用于存储卡丁车的集合
Map karts=newhashmap();

对于(inti=0;i,您可以创建一个工厂方法,该方法将使用java.util.Random来选择属性

或者您可以在Karte中创建空构造函数,该构造函数将随机分配值:

Karte() {
    Random rd = new Random();
    Farbe[] farbes = Farbe.values();
    f = farbes[rd.nextInt(farbes.length)];
    Wert[] werts = Wert.values();
    w = werts[rd.nextInt(werts.length)];
}
如果您正在查看如何根据名称存储卡,您可以将它们映射到一个字符串,如

//Create collection for storing karts
Map<String, Karte> karts = new HashMap<String, Karte>();
for(int i=0; i<10; i++) {
    Karte k = new Karte()
    karts.put((k.getWert().name()+" "+k.getFarbe.name()), k);
}
//创建用于存储卡丁车的集合
Map karts=newhashmap();

对于(inti=0;i如果你想要多张卡,你应该把它们放在一组或一堆或类似的东西上

只需使用
LinkedList
并在其上添加每个新的
Karte

当你事先不知道卡片的数量时,你不应该认为你可以给每张卡片一个单独的变量名。 如果你知道卡片的数量和它们应该有的名字,那就去做吧

Karte eins = new Karte(...)
Karte zwei = new Karte(...)
Karte drei = new Karte(...)
...
Karte homo = new Karte(KREUZ, ASS)
Karte schauen = new Karte(PIK, ZEHN)

如果你想要多张卡片,你应该把它们放在一组或者一堆或者类似的东西上

只需使用
LinkedList
并在其上添加每个新的
Karte

当你事先不知道卡片的数量时,你不应该认为你可以给每张卡片一个单独的变量名。 如果你知道卡片的数量和它们应该有的名字,那就去做吧

Karte eins = new Karte(...)
Karte zwei = new Karte(...)
Karte drei = new Karte(...)
...
Karte homo = new Karte(KREUZ, ASS)
Karte schauen = new Karte(PIK, ZEHN)

您可以将枚举转换为包含所有值的数组。使用它,您可以使用random类创建如下内容:

public static void main(String[] args)
{
    Random r = new Random();
    for (int i = 0; i < 10; i++)
    {
        Karte k = new Karte(Farbe.values()[r.nextInt(Farbe.values().length)], Wert.values()[r.nextInt(Wert.values().length)]);
        System.out.println(k);
    }

}
publicstaticvoidmain(字符串[]args)
{
随机r=新随机();
对于(int i=0;i<10;i++)
{
卡丁车k=新卡丁车(Farbe.values()[r.nextInt(Farbe.values().length)],Wert.values()[r.nextInt(Wert.values().length)];
系统输出println(k);
}
}

您可以将枚举转换为包含所有值的数组。使用它,您可以使用random类创建如下内容:

public static void main(String[] args)
{
    Random r = new Random();
    for (int i = 0; i < 10; i++)
    {
        Karte k = new Karte(Farbe.values()[r.nextInt(Farbe.values().length)], Wert.values()[r.nextInt(Wert.values().length)]);
        System.out.println(k);
    }

}
publicstaticvoidmain(字符串[]args)
{
随机r=新随机();
对于(int i=0;i<10;i++)
{
卡丁车k=新卡丁车(Farbe.values()[r.nextInt(Farbe.values().length)],Wert.values()[r.nextInt(Wert.values().length)];
系统输出println(k);
}
}

您可以尝试创建一个简单有序的
数组列表
,然后在
洗牌
之后,它的顺序得到一个
随机的
不重复的
卡丁车列表

public ArrayList<Karte> getMultipleInstances() {
  ArrayList<Karte> instances = new ArrayList<Karte>();
  for(Farbe f : Farbe.values()) {
    for(Wert w : Wert.values()) {
      instances.add(new Karte(f,w));
    }
  }
  Collections.shuffle(instances);
  return instances();
}
public ArrayList getMultipleInstances(){
ArrayList实例=新的ArrayList();
for(Farbe f:Farbe.values()){
for(Wert w:Wert.values()){
增加(新卡丁车(f,w));
}
}
集合。洗牌(实例);
返回实例();
}

您可以尝试创建一个简单有序的
数组列表
,然后在
洗牌
之后,它的顺序得到一个
随机的
不重复的
卡丁车列表

public ArrayList<Karte> getMultipleInstances() {
  ArrayList<Karte> instances = new ArrayList<Karte>();
  for(Farbe f : Farbe.values()) {
    for(Wert w : Wert.values()) {
      instances.add(new Karte(f,w));
    }
  }
  Collections.shuffle(instances);
  return instances();
}
public ArrayList getMultipleInstances(){
ArrayList实例=新的ArrayList();
for(Farbe f:Farbe.values()){
for(Wert w:Wert.values()){
增加(新卡丁车(f,w));
}
}
集合。洗牌(实例);
返回实例();
}

这是我的想法,但我不认为他问的是这个问题。我认为他说的是随机变量名。我添加了简单的生成/存储机制。这个问题确实有点含糊不清。你的答案现在看起来很完整。另外@developer3466402的答案看起来不错,以防需要没有dupl这是我想的,但我不认为这是他问的。我想他说的是随机变量名。我添加了简单的生成/存储机制。这个问题确实有点含糊不清。你的答案现在看起来很完整。另外@developer3466402的答案看起来不错,以防有必要没有重复的卡片。可能重复的…生成多个具有随机名称的对象什么是随机名称?你是指变量名称吗?一些预期结果的示例会很有帮助。你还可以描述为什么需要它,因为它看起来可能重复的…生成多个具有随机名称的对象你是什么意思ean随机名称?你是指变量的名称吗?一些预期结果的例子会很有帮助。你也可以描述你为什么需要它,因为它看起来像