从随机字符串列表中随机选择(JAVA)
我的编程经验非常少,我正在尝试为我和我的朋友们创建一个随机类生成器,我在战区玩。这是一个非常基本的生成器,但我在弄清楚如何获得我想要的输出时遇到了一些困难。它变成了一个比我预期的更大的项目,所以我会接受任何我能得到的帮助 对于没有玩过游戏的人,你最多可以选择9种不同的附件类别,即抑制器、枪管、光学元件、枪托等,但你最多只能装备5种,这意味着某些附件类别将不被使用。我还没有添加所有的附件类别或可能有的特殊附件,因为我正试图首先解决基本问题 我希望最终输出类似于:从随机字符串列表中随机选择(JAVA),java,string,list,random,Java,String,List,Random,我的编程经验非常少,我正在尝试为我和我的朋友们创建一个随机类生成器,我在战区玩。这是一个非常基本的生成器,但我在弄清楚如何获得我想要的输出时遇到了一些困难。它变成了一个比我预期的更大的项目,所以我会接受任何我能得到的帮助 对于没有玩过游戏的人,你最多可以选择9种不同的附件类别,即抑制器、枪管、光学元件、枪托等,但你最多只能装备5种,这意味着某些附件类别将不被使用。我还没有添加所有的附件类别或可能有的特殊附件,因为我正试图首先解决基本问题 我希望最终输出类似于: Primary Gun: M4A1
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语句和一些循环,但我不知道如何通过从列表中随机选择来实现。如果有人能帮我开始,我会非常感激!一旦我知道了基本方法,我就可以从那里开始添加任何我需要的东西
我还没有费心从次要附件开始,因为我还不知道如何做主要附件,但它本质上是相同的代码,只是有一些不同
谢谢你 这可以通过将值存储在可通过索引访问的集合中来实现,就像处理数组一样。然后生成一个介于0和最高索引之间的随机整数。从该索引处的集合中获取值。瞧。这是如何在列表中选择随机元素:
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);
对于一个简单的项目来说是可以的,但是如果你打算扩展这个项目,那么我建议你使用类。你知道我该怎么做吗?对不起,我只有大约半个学期的实际经验。谢谢。这有帮助吗@是的!非常感谢!非常感谢你!我如何制作9个不同的列表,然后从这些列表中只选择5个附件?@efan我无法发布完整的代码,因为这不是一个培训网站,mods将删除它。在StackOverflow上,您应该发布您的尝试,而不是要求提供完整的解决方案。我更新了我的问题,以便您了解如何处理多个列表。请考虑选出一个答案;我理解。谢谢你的帮助!这让我走上了正确的道路!
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);