从字符串的随机列表中随机选择(JAVA)

时间:2020-08-03 00:47:16

标签: java string list random

我的编程经验很少,我正尝试为我的好友和Warzone上的我的伙伴创建一个随机的(ish)类生成器。这是一个非常基本的生成器,但是我在弄清楚如何获取所需输出方面遇到了一些麻烦。它变成了一个比我预期更大的项目,所以我将尽一切可能!

对于没有玩过游戏的人,最多可以选择9种不同的附件(例如抑制器,枪管,光学器件,枪托等),但最多只能装备5种,这意味着一些附件类将不会使用。我尚未添加所有附件类别或特殊附件,因为我先尝试了基础知识。

我希望最终输出如下:

Primary Gun: M4A1
Primary Grip: Commando
Primary Laser: None
Primary Stock: No Stock Attachment
Primary Mag: 50
Primary Rear Grip: Stippled
Primary Barrel: Big Barrel 

截至目前,它仅输出类似内容

Primary Gun: M4A1 Primary Attachments: Commando None No Stock Attachment 50 Stippled None

这是我到目前为止的内容(如果代码看起来丑陋,请原谅)

import java.util.concurrent.ThreadLocalRandom;


public class RandomClass {


    public static void main(String[] args) {



        System.out.println("Primary: " + randomPrimaryGun());
        System.out.println("Attachments: " + primaryAttachments());
        System.out.println("Secondary: " + randomSecondaryGun());
       
    }


    public static String randomPrimaryGun() {

        String[] primaryGuns = {"M4A1", "Kilo", "Grau", "Bruen", "FAL", "M13"};
        int randIdx = ThreadLocalRandom.current().nextInt(primaryGuns.length);

        String randPrimary = primaryGuns[randIdx];
        return randPrimary;
    }


    public static String randomSecondaryGun() {

        String[] secondaryGuns = {"MP5", "P90", "AUG", "Uzi", "MP7"};
        int randIdx = ThreadLocalRandom.current().nextInt(secondaryGuns.length);

        String randSecondary = secondaryGuns[randIdx];
        return randSecondary;
    }


    public static String primaryAttachments() {

        String[] primaryGrip = {"Merc ", "Ranger ", "Commando ", "None "};
        String[] primaryLaser = {"Tac ", "5mw ", "None "};
        String[] primaryStock = {"No Stock Attachment ", "No Stock ", "Fast stock "};
        String[] primaryMag = {"50 ", "60 "};
        String[] primaryRearGrip = {"Stippled ", "None "};
        String[] primaryBarrel = {"Big Barrel", "Short Barrel"};

        int randIdx0 = ThreadLocalRandom.current().nextInt(primaryGrip.length);
        int randIdx1 = ThreadLocalRandom.current().nextInt(primaryLaser.length);
        int randIdx2 = ThreadLocalRandom.current().nextInt(primaryStock.length);
        int randIdx3 = ThreadLocalRandom.current().nextInt(primaryMag.length);
        int randIdx4 = ThreadLocalRandom.current().nextInt(primaryRearGrip.length);
        int randIdx5 = ThreadLocalRandom.current().nextInt(primaryBarrel.length);

        String grip = primaryGrip[randIdx0];
        String laser = primaryLaser[randIdx1];
        String stock = primaryStock[randIdx2];
        String mag = primaryMag[randIdx3];
        String rearGrip = primaryRearGrip[randIdx4];
        String barell = primaryBarrel[randIdx5];

    
    }
}

我知道我需要一些if / else语句,也许还需要一些循环,但是我不知道如何通过从列表中随机选择来实现它。如果有人至少可以帮助我入门,我将非常感激!一旦知道了基本方法,我便可以从那里开始添加所需的其他内容!

由于我还不知道如何处理主要附件,所以我还没有从次要附件开始打扰,但是本质上是相同的代码,只是有一些区别。

谢谢!

2 个答案:

答案 0 :(得分:1)

这是在列表中选择随机元素的方法:

List<String> myList = new ArrayList<>();
myList.add("M4A1");
myList.add("Kilo");
myList.add("Grau");

int randomIndex = ThreadLocalRandom.current().nextInt(myList.size());

String randomGun = myList.get(randomIndex);

randomGun的值将是三把枪之一。

修改

要随机选择一个列表,可以创建一个Map列表:

Map<Integer, List<String>> myMap = new HashMap<>();
myMap.put(1, Arrays.asList("M4A1","Kilo","Grau"));
myMap.put(2, Arrays.asList("Merc","Ranger","Commando"));
myMap.put(3, Arrays.asList("50","60","70"));

int randomIndex = ThreadLocalRandom.current().nextInt(myMap.size());

List<String> randomList =  myMap.get(randomIndex);

对于一个简单的项目来说还可以,但是如果您打算扩展该项目,那么我建议使用类。

答案 1 :(得分:0)

这可以通过将值存储在可以通过索引访问的集合中来实现,就像处理数组一样。然后,您将生成一个介于0和最高索引之间的随机整数。从该索引处的集合中获取值。瞧!