Java 如何使用随机类生成3个单词
我得到一个多数组(基于随机选择的页码、段落和行号)来讲述一个故事。我需要生成一个包含从数组中随机抽取的3个单词的密码。必须给出创建密码的规则(例如:密码必须有10个字符长,不能重复同一个单词) 这是针对Java的。(步骤1)密码必须由3个单词组成(步骤2)随机选择页码、段落和行号,并且必须使用随机类使用nextInt()生成随机数。(步骤3)使用split()分隔随机字符串中的每个单词。(步骤4)确保在步骤3中从数组中选择一个随机字。(步骤5)为密码创建限制 我为限制创建了if-else语句。 如果不遵守规则,程序必须始终返回(步骤2) 但在某些情况下,当它失败时,它只打印出通过限制('\n')的单词。有时它会打印1个字,或2个字,或者在我运行程序时它会给出一个错误Java 如何使用随机类生成3个单词,java,arrays,loops,for-loop,random,Java,Arrays,Loops,For Loop,Random,我得到一个多数组(基于随机选择的页码、段落和行号)来讲述一个故事。我需要生成一个包含从数组中随机抽取的3个单词的密码。必须给出创建密码的规则(例如:密码必须有10个字符长,不能重复同一个单词) 这是针对Java的。(步骤1)密码必须由3个单词组成(步骤2)随机选择页码、段落和行号,并且必须使用随机类使用nextInt()生成随机数。(步骤3)使用split()分隔随机字符串中的每个单词。(步骤4)确保在步骤3中从数组中选择一个随机字。(步骤5)为密码创建限制 我为限制创建了if-else语句。
password = ridingfun
password = boy
Password = Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Assign3Q1.main(passGen.java:123)
// line 123 happens is the String sentence = story[pageNum][paraNum][lineNum];
不是100%确定你的意思,但我很肯定你最终会用你的随机数生成器击中一个出界点 如果您的故事长度为10,则nextInt可以选择10,因为它包含您传递给它的整数。因此,如果您以10结尾,然后执行故事[10],您将得到一个越界,因为索引从0开始 我建议
r.nextInt(story.length - 1)
我相信你的问题在于:
int pageNum = r.nextInt(story.length);
int paraNum = r.nextInt(story.length);
int lineNum = r.nextInt(story.length);
段落的数量取决于页面,行数取决于页面和段落。我想你想要的是:
int pageNum = r.nextInt(story.length);
int paraNum = r.nextInt(story[pageNum].length);
int lineNum = r.nextInt(story[pageNum][paraNum].length);
关于查找通过条件的三个单词,在连接它们之前,您可以使用流来实现这一点,而不是使用for循环。目前,不符合你标准的词语将被悄悄忽略:
Stream.generate(this::randomWord)
.filter(w -> !w.contains("\n"))
.limit(3)
.collect(Collectors.joining());
否则,您需要一个字数计数器:
int wordsRequired = 3;
while (wordsRequired > 0) {
String randomWord = ...;
if (!randomWord.contains("\n")) {
System.print...
randomWord--);
}
}
还请注意,您可以使用
split(\\s”)
自动删除换行符。这将在包含换行符和制表符的任何空格(而不仅仅是空格)上拆分 您好,我注意到底部程序中有几个区域出现“…”。应该去那里干什么?
Stream.generate(this::randomWord)
.filter(w -> !w.contains("\n"))
.limit(3)
.collect(Collectors.joining());
int wordsRequired = 3;
while (wordsRequired > 0) {
String randomWord = ...;
if (!randomWord.contains("\n")) {
System.print...
randomWord--);
}
}