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