【问题标题】:How would you create a list of Objects with randomly generated elements in Java?您将如何在 Java 中创建具有随机生成元素的对象列表?
【发布时间】:2021-05-20 22:59:57
【问题描述】:

生成具有随机值的对象并将它们存储在数组中

我正在制定一个船舶运营计划。为了测试一些程序,我一直在尝试生成一个随机船只列表,其中包含不同的元素,如名称、序列号、一些布尔值和其他整数。 这是一个例子:

tfu
Serial Number: 8011148632
Maximum Cargo Size: 14
Maximum Ship Speed: 23
Vessel is on export lane
Ship Class 3

我开发了一个系统来随机生成数据,但只知道如何将其存储在 String 变量中,然后作为列表存储。 列表存储:

      String shipDe = randomName + "\n"
             + "Serial Number: " + serial + "\n"
             + "Maximum Cargo Size: " + cargoSize + "\n"
             + "Maximum Ship Speed: "+ shipSpeed + "\n"
             + located + "\n"
             + classeses + "\n";

      return shipDe;

这里我列出了一个字符串

public String[] liste(int shipN) {
        int okay = shipN;
        String[] lister= new String[okay];

        for (int i = 0; i < okay; i++){
            randomShip shippi = new randomShip();

         String hello = shippi.shipDetails();
         lister[i] = hello;

        }

        return lister;

对于我的项目,我需要将所有数据分开,以便我可以在列表中搜索具有特定货物尺寸、等级或速度的船舶,然后检查船舶的位置。我不希望将数据存储为一个字符串,而是作为一个我可以存储的单个对象是一个列表。

【问题讨论】:

  • 欢迎来到 SO!请不要直接在问题中添加解决方案。如果您的问题将被重新打开,您可以在答案部分添加您的解决方案。同时,您应该仔细阅读help section,然后再制定其他问题。

标签: java arrays object random


【解决方案1】:

(已解决)

为了解决这个问题,我首先在 shipDetails(对象)类中添加了一个 setter。这有助于将来添加您自己的船只

 public shipDetails bigSetter(String n, int s, int cS, int sS, int l, String cL){
        shipDetails aShip = new shipDetails();
        aShip.randomName = n;
        aShip.serial = s;
        aShip.cargoSize = cS;
        aShip.shipSpeed = sS;
        aShip.located = l;
        aShip.classLevel = cL;
        String locateds = "";

        if(l == 1){
            locateds = "Docked Vessel";
        } else if (l == 2){
            locateds = "On Import Lane";
        } else if (l == 3){
            locateds = "On Export Lane";
        }
        aShip.shipSummary = n + "\n"
                + "Serial Number: " + s + "\n"
                + "Maximum Cargo Size: " + cS + "\n"
                + "Maximum Ship Speed: "+ sS + "\n"
                + locateds + "\n"
                + cL + "\n";

        return aShip;

    }

如果我只想要随机答案,我可以将所有内容都设置为 randomGenerator 类的输出。当然,我将这些类分开,但 randomGenerator 类生成了一个随机名称、序列号和其他特征,并返回了一个通过 bigSetter 生成的 shipDetails 对象,但这不是我列出的地方。 相反,我创建了一个单独的类来生成一系列随机 shipDetails。这会运行一个 for 循环并调用 randomGenerator 类 a 来创建一个 shipDetails 对象。然后将 shipDetails 存储到一个数组列表中。这是随机重复的次数。

import java.util.ArrayList;

public class listOfShips {

    public ArrayList<shipDetails> list(){

        int requestedNumber = (int)(Math.random() *(30 - 10 + 1) + 10);;


        ArrayList<shipDetails> listo = new ArrayList<shipDetails>();

        for(int i = 0; i <= requestedNumber; i++){
            randomShipMaker random = new randomShipMaker();
            shipDetails randomy = random.randomShip();

            listo.add(randomy);

        }

        return listo;
    }

}

然后我可以访问列表类来获取随机 shipDetails 的 ArrayList,我可以使用我的项目进行搜索、添加和删除。

-安德鲁

【讨论】:

    猜你喜欢
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 2020-10-12
    相关资源
    最近更新 更多