gpt4 book ai didi

java - 如何随机化一个字符串数组,使其每次循环都不同

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:07 25 4
gpt4 key购买 nike

所以我正在制作一个描述生成器,并在“:”处拆分一个文本文件。因此,如果文本文件包含“dog:fish:cat:bird”,我的代码会将其拆分为“:”并随机选择一个。但是,当我打印出最终结果时,输出都是一样的。它会随机选择数组中的单词,但如果我说生成它 4 次,它会是同样的东西 4 次。那么我的逻辑错误在哪里呢?我希望它打印 4 个随机不同的东西。我的代码如下:

公共(public)类生成器{

public static void main(String[] args) 
{
Scanner scanner = new Scanner(System.in);
Random r = new Random();

System.out.print("Enter a file name: ");
String fName = scanner.nextLine();
File infle = new File(fName);
Scanner read = new Scanner(infle);

System.out.print("Enter number to make: ");
int things = scanner.nextInt();
System.out.println();
System.out.println("Here are " + things + " things: ");
System.out.println();


//gets random animal
String animal = read.nextLine();
String[]anm1 = animal.split(":");
int rnd_Animal = r.nextInt(anm1.length);
String rndAnimal = (anm1[rnd_Animal]);


//gets random adjective
String adj = read.next();
String []adj1 = adj.split(":");
int rndAdj = r.nextInt(adj1.length);
String randomAdj = (adj1[rndAdj]);


for(int i=0; i <things; i++)
{
System.out.println(randomAdj + " " + rndAnimal);}

因此,我的输出将打印为:“sweaty fish”,与我输入的次数一样多。如果我输入 3 个要生成的描述,如何让它说“汗水鱼”、“臭狗”、“慢鱼”?感谢您的帮助。

最佳答案

问题是您在 for 循环之外获取了 rndAnimalrandomAdj 的值。所以它随机获取值 ONLY ONCE 并显示四次。为了解决这个问题,将值分配给循环内的两个String。

for(int i=0; i<things; i++){

//gets random animal
String animal = read.nextLine();
String[]anm1 = animal.split(":");
int rnd_Animal =r.nextInt(anm1.length);
String rndAnimal =(anm1[rnd_Animal]);

//gets random adjective
String adj = read.next();
String []adj1 = adj.split(":");
int rndAdj = r.nextInt(adj1.length);
String randomAdj = (adj1[rndAdj]);

System.out.println(randomAdj + " " + rndAnimal);
}

关于java - 如何随机化一个字符串数组,使其每次循环都不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36962826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com