Java 为什么我的while循环在应该是随机的情况下重复相同的语句?
然后只重复一条语句,例如: 约翰逊掷杆击球 约翰逊掷杆击球 约翰逊掷杆击球 约翰逊掷杆击球 约翰逊掷杆击球Java 为什么我的while循环在应该是随机的情况下重复相同的语句?,java,string,while-loop,Java,String,While Loop,然后只重复一条语句,例如: 约翰逊掷杆击球 约翰逊掷杆击球 约翰逊掷杆击球 约翰逊掷杆击球 约翰逊掷杆击球 如何使其随机,每次都不同。您只运行字符串赋值一次。所以它永远都是一样的。把你的作业: List<String> n = new ArrayList<String>(); n.add("Allen"); n.add("beer"); n.add("Johnson"); n.add("bar"); n.add("girl"); List<
如何使其随机,每次都不同。您只运行字符串赋值一次。所以它永远都是一样的。把你的作业:
List<String> n = new ArrayList<String>();
n.add("Allen");
n.add("beer");
n.add("Johnson");
n.add("bar");
n.add("girl");
List<String> v = new ArrayList<String>();
v.add("shot");
v.add("drank");
v.add("ate");
v.add("hit");
v.add("tossed");
int noun = (int)(Math.random() * n.size());
int verb = (int)(Math.random() * v.size());
int noun2 = (int)(Math.random() * n.size());
int verb2 = (int)(Math.random() * v.size());
int noun3 = (int)(Math.random() * n.size());
String a = new String(n.get(noun) + " " + v.get(verb) + " " + n.get(noun2) + " " + "and" + " " + v.get(verb2) + " " + n.get(noun3));
int x = 0;
while (x < 5) {
System.out.println(a);
x++;
}
在循环内部,如果希望多次重新生成它,如下所示:
String a = new String(n.get(noun) + " " + v.get(verb) + " " + n.get(noun2) + " " + "and" + " " + v.get(verb2) + " " + n.get(noun3));
您需要重新生成一个随机字符串,而不是使用一个字符串。只需将随机逻辑放入while循环。您可以尝试:
int x = 0;
while (x < 5) {
int noun = (int)(Math.random() * n.size());
int verb = (int)(Math.random() * v.size());
int noun2 = (int)(Math.random() * n.size());
int verb2 = (int)(Math.random() * v.size());
int noun3 = (int)(Math.random() * n.size());
String a = new String(n.get(noun) + " " + v.get(verb) + " " + n.get(noun2) + " " + "and" + " " + v.get(verb2) + " " + n.get(noun3));
System.out.println(a);
x++;
}
您需要在每次运行while循环时重新随机化随机变量。即使使用Math.random来声明变量,它也不会在每次使用时都更改。一旦你声明了一个变量,它不会改变,除非你通过给它一个新的值来改变它。因此,您需要这样做:
List<String> n = new ArrayList<String>();
n.add("Allen");
n.add("beer");
n.add("Johnson");
n.add("bar");
n.add("girl");
List<String> v = new ArrayList<String>();
v.add("shot");
v.add("drank");
v.add("ate");
v.add("hit");
v.add("tossed");
int x = 0;
while (x < 5) {
int noun = (int)(Math.random() * n.size());
int verb = (int)(Math.random() * v.size());
int noun2 = (int)(Math.random() * n.size());
int verb2 = (int)(Math.random() * v.size());
int noun3 = (int)(Math.random() * n.size());
String a = n.get(noun) + " " + v.get(verb) + " " + n.get(noun2) + " " + "and" + " " + v.get(verb2) + " " + n.get(noun3);
System.out.println(a);
x++;
}
这样,您就可以在每次迭代while循环时更改名词、动词等的值。在进入while循环之前设置随机变量。因此,在while循环的每次迭代中,都使用相同的值。为了在每次迭代中得到不同的结果,您还需要在while循环中包含随机数生成
int x = 0;
while (x < 5) {
int noun = (int)(Math.random() * n.size());
int verb = (int)(Math.random() * v.size());
int noun2 = (int)(Math.random() * n.size());
int verb2 = (int)(Math.random() * v.size());
int noun3 = (int)(Math.random() * n.size());
String a = new String(n.get(noun) + " " + v.get(verb) + " " + n.get(noun2) + " " + "and" + " " + v.get(verb2) + " " + n.get(noun3));
System.out.println(a);
x++;
}
}您想具体随机化什么?如果随机化发生在循环之外,则值永远不会改变。您的解决方案仍然存在OP当前的缺陷,因为您没有在循环内每次生成一个随机数。@OusmaneMahyDiaw,完全跳过了该部分。将更新,谢谢
int x = 0;
while (x < 5) {
int noun = (int)(Math.random() * n.size());
int verb = (int)(Math.random() * v.size());
int noun2 = (int)(Math.random() * n.size());
int verb2 = (int)(Math.random() * v.size());
int noun3 = (int)(Math.random() * n.size());
String a = new String(n.get(noun) + " " + v.get(verb) + " " + n.get(noun2) + " " + "and" + " " + v.get(verb2) + " " + n.get(noun3));
System.out.println(a);
x++;