繁体   English   中英

如何随机化一个String数组,以便每次循环都不同

[英]How to randomize an array of a String so it is different every time though the loop

所以我正在创建一个描述生成器,并将文本文件拆分为“:”。 因此,如果文本文件有“dog:fish:cat:bird”,我的代码会将其拆分为“:”并随机选择一个。 但是,当我打印出结束结果时,输出完全相同。 它将随机选择数组中的单词,但如果我说它生成它4次,那将是4次相同的事情。 那么我的逻辑错误在于如何解决这个问题呢? 我想要它打印4个随机不同的东西。 我的代码如下:

公共类生成器{

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);}

因此,我输出的内容将像:“汗流淌的鱼”一样多次,因为我输入了它。 如果我输入3个描述,我怎么能说“汗鱼”,“臭狗”,“慢鱼”? 感谢您的任何帮助。

问题是你得到for循环之外的rndAnimalrandomAdj的值。 因此它只会随机获取值并显示四次。 要解决此问题,请将值分配给循环内的两个字符串。

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM