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

时间:2016-05-01 03:44:33

标签: java arrays loops

所以我正在创建一个描述生成器并将文本文件拆分为“:”。因此,如果文本文件有“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个描述,我怎么能说“汗鱼”,“臭狗”,“慢鱼”?谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

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

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